Vrátí hodnotu typu Variant (Long) určující počet časových intervalů mezi dvěma zadanými daty.
Syntaxe
DateDiff ( interval, datum1, datum2 [; první_den_v_týdnu] [; první_týden_v_roce] )
Syntaxe funkce DateDiff má tyto argumenty:
Argument |
Popis |
---|---|
interval |
Povinný argument. Řetězcový výraz, který je časový interval, který použijete k výpočtu rozdílu mezi date1 a date2. |
datum1, datum2 |
Povinný argument. Varianta (datum). Dvě kalendářní data, která chcete použít ve výpočtu. |
První_den_v_týdnu |
Nepovinný argument. Konstanta, který určuje první den v týdnu. Pokud není zadáno, předpokládá se neděle. |
první týden v roce |
Nepovinný argument. Konstanta, která určuje první týden v roce. Pokud není zadán, předpokládá se, že prvním týdnem je týden, ve kterém nastane 1. leden. |
Nastavení
IntervalArgument má tato nastavení:
Nastavení |
Popis |
---|---|
yyyy |
Rok |
q |
Čtvrtletí |
m |
Měsíc |
y |
Den v roce |
d |
Den |
w |
Funkce Weekday |
ww |
Týden |
h |
Hodina |
n |
Minuta |
s |
Sekunda |
Argument firstdayofweek má tato nastavení:
Konstanta |
Value (Hodnota) |
Popis |
---|---|---|
vbUseSystem |
0 |
Použijte nastavení rozhraní API služby 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žijte nastavení rozhraní API služby NLS. |
vbFirstJan1 |
1 |
Začněte týdnem, ve kterém nastane 1. leden (výchozí nastavení). |
vbFirstFourDays |
2 |
Začněte prvním týdnem, který má v novém roce alespoň čtyři dny. |
vbFirstFullWeek |
3 |
Začněte prvním celým týdnem v roce. |
Poznámky
Pomocí funkce DateDiff můžete určit, kolik zadaných časových intervalů existuje mezi dvěma daty. Pomocí funkce DateDiff můžete například vypočítat počet dní mezi dvěma daty nebo počet týdnů mezi dnešním dnem a koncem roku.
K výpočtu počtu dnů mezi datem 1 a datem 2 můžete použít den v roce ("y") nebo den ("d"). Pokud je interval weekday ("w"), vrátí Funkce DateDiff počet týdnů mezi dvěma daty. Pokud datum1 spadá na pondělí, funkce DateDiff spočítá počet pondělí až do data2. Počítá datum2, ale ne datum1. Pokud je ale interval Týden ("ww"), vrátí funkce DateDiff počet kalendářních týdnů mezi těmito dvěma daty. Spočítá počet nedělí mezi datem 1 a datem 2. DateDiff počítá datum2 , pokud spadá na neděli; ale nepočítá datum1, i když spadá na neděli.
Pokud datum1 odkazuje na pozdější bod v čase než datum2, vrátí funkce DateDiff záporné číslo.
Argument firstdayofweek ovlivňuje výpočty, které používají symboly intervalu "w" a "ww".
Pokud je date1 nebo date2Literál typu datum, stane se zadaný rok trvalou součástí tohoto data. Pokud je však datum1 nebo datum2 uzavřeno v uvozovkách (" ") a vynecháte rok, aktuální rok se vloží do kódu při každém vyhodnocení výrazu date1 nebo date2 . To umožňuje napsat kód, který se dá použít v různých letech.
Při porovnání 31. prosince s 1. lednem bezprostředně následujícího roku vrátí Funkce DateDiff pro rok ("yyyy") hodnotu 1, i když uplynul pouze jeden den.
Poznámka: Pro datum1 a datum2 platí, že pokud je nastavení vlastnosti Kalendář gregoriánské, musí být zadané datum gregoriánské. Pokud je kalendář Hidžra, musí být zadané datum Hidžra.
Příklady dotazů DateDiff
Výraz |
Výsledky |
---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Vrátí rozdíl mezi datem 2 a datem 1 (datum1 považujete za nejstarší a datum2 za nejnovější) jako počet roků. Výsledek: Rozdíl mezi hodnotami v poli DateofSale a datem "01/01/2010" jako počtem 'Years'. |
SELECT DateDiff("q";[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateofSale jako počtem čtvrtletí (na základě kalendářního roku) a zobrazí se ve sloupci DaysSinceSale. vrátí rozdíl mezi systémovým datem a DateofSale jako počet měsíců a zobrazí se ve sloupci DaysSinceSale. |
SELECT DateDiff("y";[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateofSale jako počet dnů a zobrazí se ve sloupci DaysSinceSale. |
SELECT DateDiff("d";[DateofSale],Date()) AS DaysSinceSprodej FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateofSale jako počet dnů a zobrazí se ve sloupci DaysSinceSale. |
SELECT DateDiff("w";[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateofSale jako počet dnů v týdnu a zobrazí se ve sloupci DaysSinceSale. Pokud dateofSale spadá na pondělí, dateDiff spočítá počet pondělí až do data systému. Počítá systémové datum, ale ne hodnotu v dateofSale. |
SELECT DateDiff("ww";[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a datem "DateofSale" jako číslem "Týdny kalendáře" a zobrazí se ve sloupci "DaysSinceSale". Počítá počet nedělí mezi "DateofSale" a "systémovým datem". Bude počítat systémové datum, pokud spadá na neděli; ale nepočítá "DateofSale", i když spadá na neděli. |
SELECT DateDiff("h";[DateTime],Date()) AS DaysSinceProdej FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateTime jako počet hodin a zobrazí se ve sloupci DaysSinceSale. |
SELECT DateDiff("n";[DateTime],Date()) AS DaysSinceProdej FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a datem a časem jako počtem minut a zobrazí se ve sloupci DaysSinceSale. |
SELECT DateDiff("s";[DateTime],Date()) AS DaysSinceProdej FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a DateTime jako počet sekund a zobrazí se ve sloupci DaysSinceSale. |
Vzorový výraz
Použití funkce DateDiff ve výrazu Funkci DateDiff můžete použít všude tam, kde můžete použít 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 Orders máte pole s názvem ReceiveBefore, které obsahuje datum, do kterého zákazník potřebuje objednávku obdržet. Pomocí funkce DateDiff s textovým polem ve formuláři můžete zobrazit zbývající počet dní před odesláním objednávky.
Za předpokladu, že odeslání jakékoli objednávky trvá deset dní, nastavíte vlastnost Zdroj ovládacího prvku textového pole následujícím způsobem:
=DateDiff("d"; Now(); [Orders].[ ReceiveBefore])-10
Když formulář otevřete ve formulářovém zobrazení, zobrazí se v textovém poli počet dnů, které zbývá do odeslání objednávky. Pokud zákazníkovi zbývá méně než 10 dní, než bude muset objednávku obdržet, je číslo v textovém poli záporné a udává, o kolik dní bude objednávka zpožděna, pokud bude odeslána okamžitě.
Příklad jazyka VBA
Použití funkce DateDiff v kódu jazyka VBA
Tento příklad používá funkci DateDiff 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