Vráti hodnotu typu Variant (Long), ktorá určuje počet časových intervalov medzi dvomi dátumami.
Syntax
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
Funkcia DateDiff má tieto argumenty:
| Argument | Popis |
|---|---|
interval |
Povinný argument. Reťazcový výraz, ktorý vyjadruje časový interval, ktorý sa používa na výpočet rozdielu medzi date1 a date2. |
date1, date2 |
Povinný argument. Variant (Date). Dva dátumy, ktoré chcete použiť vo výpočte. |
firstdayofweek |
Voliteľný argument. Konštanta, ktorá určuje prvý deň týždňa. Ak ho nezadáte, predpokladá sa, že je to nedeľa. |
firstweekofyear |
Voliteľný argument. Konštanta, ktorá určuje prvý týždeň roka. Ak ho nezadáte, prvý týždeň spadá do týždňa, do ktorého spadá 1. január. |
Nastavenia
Argument interval má tieto nastavenia:
| Nastavenie | Popis |
|---|---|
yyyy |
Rok |
q |
Štvrťrok |
m |
Mesiac |
y |
Deň v roku |
d |
Deň |
w |
Weekday |
ww |
Týždeň |
h |
Hodina |
n |
Minúta |
s |
Sekunda |
Argument firstdayofweek má tieto nastavenia:
| Konštanta | Hodnota | Popis |
|---|---|---|
vbUseSystem |
0 | Používa nastavenie NLS API. |
vbSunday |
1 | Nedeľa (predvolené) |
vbMonday |
2 | Pondelok |
vbTuesday |
3 | Utorok |
vbWednesday |
4 | Streda |
vbThursday |
5 | Štvrtok |
vbFriday |
6 | Piatok |
vbSaturday |
7 | Sobota |
| Konštanta | Hodnota | Popis |
|---|---|---|
vbUseSystem |
0 | Používa nastavenie NLS API. |
vbFirstJan1 |
1 | Začína sa týždňom, do ktorého spadá 1. január (predvolená možnosť). |
vbFirstFourDays |
2 | Začína sa prvým týždňom, v ktorom sa nachádzajú aspoň štyri dni nového roka. |
vbFirstFullWeek |
3 | Začína sa prvým celým týždňom v roku. |
Poznámky:
Funkciu DateDiff môžete použiť na určenie, koľko zadaných časových intervalov existuje medzi dvomi dátumami. Môžete ich DateDiff použiť napríklad na výpočet počtu dní medzi dvomi dátumami alebo počtu týždňov medzi dnešným dňom a koncom roka.
Na výpočet počtu dní medzi znakmi date1 a date2môžete použiť buď Deň v roku ("y") alebo Deň ("d"). When is interval Weekday ("w"), DateDiff vráti počet týždňov medzi dvomi dátumami. Ak date1 pripadá na pondelok, DateDiff spočíta počet pondelkov do date2. Počíta date2 sa, ale nie date1. Ak interval je to však hodnota Týždeň ("ww"), funkcia vráti DateDiff počet kalendárnych týždňov medzi dvomi dátumami. Počíta počet nedieľ medzi date1 a date2.
DateDiff Počíta date2 sa, ak pripadá na nedeľu, ale nepočíta date1sa, aj keď pripadá na nedeľu.
Ak date1 funkcia odkazuje na neskorší časový bod date2, vráti DateDiff záporné číslo.
Argument firstdayofweek ovplyvňuje výpočty, ktoré používajú "w" intervalové symboly and "ww" .
Ak date1 je dátumový literál alebo date2 ním je, zadaný rok sa stane trvalou súčasťou daného dátumu. Ak je však date1 znak OR date2 uzavretý dvojitými úvodzovkami (" ") a vynecháte rok, pri každom vyhodnocovaní výrazu date1 OR date2 sa do vášho kódu vloží aktuálny rok. Takto je možné písať kód, ktorý budete môcť používať v rôznych rokoch.
Pri porovnaní 31. decembra a 1. januára nasledujúceho roka vráti položka Year ("yyyy") hodnotu 1 napriek tomu, DateDiff že uplynul iba jeden deň.
Poznámka
Pre date1 a date2, ak je vlastnosť nastavená Calendar na možnosť Gregoriánsky, zadaný dátum musí byť podľa gregoriánskeho kalendára. Ak ide o kalendár Hedžra, zadaný dátum musí byť podľa kalendára Hedžra.
Príklady dotazov DateDiff
| Výraz | Výsledky |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Vráti rozdiel v rokoch medzi dátumom 01/01/2010 a hodnotami v poli.DateofSale |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vráti rozdiel medzi systémovým dátumom a DateofSalesymbolom , vyjadrený v štvrťrokoch na základe kalendárneho roka, a zobrazí ho v DaysSinceSale stĺpci. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vráti rozdiel medzi systémovým dátumom a DateofSale, v dňoch a zobrazí ho v DaysSinceSale stĺpci. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vráti rozdiel medzi systémovým dátumom a DateofSale, v dňoch a zobrazí ho v DaysSinceSale stĺpci. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vráti rozdiel medzi systémovým dátumom a DateofSalesymbolom , vyjadrený v pracovných dňoch, a zobrazí ho v DaysSinceSale stĺpci. Ak DateofSale pripadne na pondelok, DateDiff spočíta počet pondelkov po systémový dátum. Počíta systémové dátumy, nie však DateofSale hodnotu. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vráti rozdiel medzi systémovým dátumom a DateofSale, vyjadrený v kalendárnych týždňoch, a zobrazí ho v stĺpci DaysSinceSale . Spočíta počet nedieľ medzi systémovým DateofSale dátumom a systémovým dátumom. Systémový dátum sa spočíta, ak pripadne na nedeľu, ale nepočíta DateofSalesa, aj keď pripadne na nedeľu. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Vráti rozdiel v hodinách medzi systémovým dátumom a DateTimesymbolom , a zobrazí ho v DaysSinceSale stĺpci. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Vráti rozdiel medzi systémovým dátumom a DateTimesymbolom , v minútach, a zobrazí ho v DaysSinceSale stĺpci. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Vráti rozdiel medzi systémovým dátumom a DateTimesymbolom , v sekundách a zobrazí ho v stĺpci.DaysSinceSale |
Použitie funkcie DateDiff vo výraze
Funkciu DateDiff môžete použiť všade, kde môžete použiť výrazy. Povedzme napríklad, že máte formulár, ktorý používate na vybavenie objednávok zákazníkov. V tabuľke Objednávky máte pomenované ReceiveBefore pole, ktoré obsahuje dátum, ku ktorému zákazník potrebuje objednávku prijať. Funkciu DateDiff môžete použiť s textovým poľom vo formulári na zobrazenie počtu zostávajúcich dní, dokedy je objednávku potrebné odoslať.
Za predpokladu, že odoslanie ľubovoľnej objednávky trvá desať dní, nastavte vlastnosť Zdroj ovládacieho prvku pre textové pole takto:
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10
Keď otvoríte formulár v zobrazení formulára, textové pole zobrazí počet zostávajúcich dní, dokedy je objednávku potrebné odoslať. Ak zostáva menej ako 10 dní do dňa, kedy zákazník potrebuje objednávku prijať, číslo v textovom poli je záporné. Udáva, o koľko dní oneskoríte doručenie objednávky, ak ju odošlete okamžite.
Použitie funkcie DateDiff v kóde VBA
V tomto príklade je funkcia použitá DateDiff na zobrazenie počtu dní medzi daným dátumom a dnešným dňom.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg