Vrátí hodnotu typu Variant (Long), která určuje počet časových intervalů mezi dvěma daty.
Syntaxe
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
Funkce DateDiff má tyto argumenty:
| Argument | Popis |
|---|---|
interval |
Povinný argument. Řetězcový výraz představující časový interval použitý k výpočtu rozdílu mezi date1 a date2. |
date1, date2 |
Povinný argument. Variant (datum). Dvě data, která chcete použít při výpočtu. |
firstdayofweek |
Nepovinný argument. Konstanta, která určuje první den v týdnu. Pokud ji nezadáte, předpokládá se, že je to neděle. |
firstweekofyear |
Nepovinný argument. Konstanta, která určuje první týden v roce. Pokud ho nezadáte, považuje se za první týden týden, do kterého spadá datum 1. ledna. |
Nastavení
Argument interval má následující nastavení:
| Nastavení | Popis |
|---|---|
yyyy |
Rok |
q |
Čtvrtletí |
m |
Měsíc |
y |
Den roku |
d |
Den |
w |
Funkce Weekday |
ww |
Týden |
h |
Hodina |
n |
Minuta |
s |
Sekunda |
Argument firstdayofweek má následující nastavení:
| Konstanta | Value (Hodnota) | Popis |
|---|---|---|
vbUseSystem |
0 | Používá nastavení rozhraní API NLS. |
vbSunday |
1 | Neděle (výchozí) |
vbMonday |
2 | Pondělí |
vbTuesday |
3 | Úterý |
vbWednesday |
4 | Středa |
vbThursday |
5 | Čtvrtek |
vbFriday |
6 | Pátek |
vbSaturday |
7 | Sobota |
| Konstanta | Value (Hodnota) | Popis |
|---|---|---|
vbUseSystem |
0 | Používá nastavení rozhraní API NLS. |
vbFirstJan1 |
1 | Začíná týdnem, ve kterém je 1. leden (výchozí). |
vbFirstFourDays |
2 | Začíná prvním týdnem, který má v novém roce alespoň čtyři dny. |
vbFirstFullWeek |
3 | Začíná prvním celým týdnem roku. |
Poznámky
Pomocí této DateDiff funkce můžete určit, kolik zadaných časových intervalů je mezi dvěma daty. Můžete ho třeba použít DateDiff k výpočtu počtu dní mezi dvěma kalendářními daty nebo počtu týdnů mezi dneškem a koncem roku.
K výpočtu počtu dní mezi date1 a date2, můžete použít buď Den v roce ("y") nebo Den ("d"). Argument interval Den v týdnu ("w"), DateDiff vrátí počet týdnů mezi dvěma daty. Pokud date1 připadne na pondělí, DateDiff vrátí počet pondělků do date2. Počítá date2 se, ale ne date1. Pokud interval je to Týden ("ww"), DateDiff vrátí funkce počet kalendářních týdnů mezi dvěma daty. Počítá počet nedělí mezi date1 a date2.
DateDiff
date2 počítá, pokud připadne na neděli, ale nepočítá date1se, i když připadne na neděli.
Pokud date1 odkazuje na pozdější časový bod než date2, DateDiff vrátí funkce záporné číslo.
Tento firstdayofweek argument má vliv na výpočty, které používají symboly intervalu "w" a "ww"
date2 Pokud date1 se jedná o datum doslovně, stane se zadaný rok trvalou součástí daného data. Pokud date1 je však řetězec nebo date2 uzavřen v uvozovkách (" ") a vynecháte rok, bude při každém vyhodnocení výrazu date1 or date2 vložen do kódu aktuální rok. Díky tomu můžete psát kód, který můžete použít v různých letech.
Když porovnáte 31. prosinec s 1. lednem následujícího roku, DateDiff pro rok ("yyyy") vrátí 1, i když uplynul jenom jeden den.
Poznámka
For date1 a date2, pokud je nastavení vlastnosti gregoriánské Calendar , musí být zadané datum gregoriánského. Pokud je kalendář hidžra, zadané datum musí být hidžra.
DateDiff Příklady dotazů
| Výraz | Výsledky: |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Vrátí rozdíl mezi datem 01/01/2010 a hodnotami v DateofSale poli vyjádřený v letech. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateofSaleznakem , vyjádřený čtvrtletími podle kalendářního roku a zobrazí jej ve sloupci DaysSinceSale . |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateofSaleznakem ve dnech a zobrazí ho ve sloupci DaysSinceSale . |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateofSaleznakem ve dnech a zobrazí ho ve sloupci DaysSinceSale . |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateofSaletabulkou v pracovních dnech a zobrazí ho ve sloupci DaysSinceSale . Pokud DateofSale připadne na pondělí, DateDiff vrátí počet pondělků do systémového data. Počítá systémové datum, ale ne DateofSale hodnotu. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateofSaleznakem v kalendářních týdnech a zobrazí ho ve sloupci DaysSinceSale . Počítá počet nedělí mezi DateofSale a systémovým datem. Počítá systémové datum, pokud připadne na neděli, ale nepočítá DateofSale, i když připadne na neděli. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateTimeznakem v hodinách a zobrazí ho ve sloupci DaysSinceSale . |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl v minutách mezi systémovým datem a datem a DateTimezobrazí ho ve sloupci DaysSinceSale . |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateTimeznakem v sekundách a zobrazí ho ve sloupci DaysSinceSale . |
Použití funkce DateDiff ve výrazu
Tuto DateDiff funkci můžete použít všude, kde se dají používat výrazy. Předpokládejme například, že máte formulář, který používáte k plnění objednávek zákazníků. V tabulce Objednávky máte pole s názvem ReceiveBefore , které obsahuje datum, do kterého musí zákazník objednávku přijmout. Tuto funkci můžete použít DateDiff s textovým polem ve formuláři k zobrazení počtu dní, které zbývají do odeslání objednávky.
Za předpokladu, že odeslání objednávky trvá deset dní, nastavte vlastnost Zdroj ovládacího prvku textového pole takto:
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10
Po otevření formuláře ve formulářovém zobrazení se v textovém poli zobrazí počet dní, které zbývají do odeslání objednávky. Pokud do přijetí objednávky zákazníkovi zbývá méně než 10 dní, je číslo v textovém poli záporné. Je tam uvedeno, o kolik dní se objednávka zpozdí, pokud ji hned odešlete.
Použití funkce DateDiff v kódu jazyka VBA
V tomto příkladu se funkce DateDiff používá k zobrazení počtu dní mezi daným datem a dneškem.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg