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 [, firstdayofweek] [, firstweekofyear] )
Syntaxe funkce DateDiff obsahuje následující argumenty:
Tip: V Accessu 2010 obsahuje Tvůrce výrazů technologii IntelliSense, takže vidíte, jaké argumenty výraz vyžaduje.
Argument |
Popis |
interval |
Povinný argument. Řetězcový výraz představující časový interval pro výpočet rozdílu mezi date1 a date2. |
datum1, datum2 |
Povinný argument. Variant (Date). Dvě kalendářní data, která chcete použít ve výpočtu. |
firstdayofweek |
Nepovinný argument. Název Konstanta, který určuje první den v týdnu. Pokud není zadána, předpokládá se, že je to neděle. |
prvnítýdně v roce |
Nepovinný argument. Konstanta určující první týden v roce. Pokud není zadán, předpokládá se, že první týden je týden, do kterého se vyskytuje 1. leden. |
Nastavení
Interval, Argument má tato 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 |
První_den_v_týdnu obsahuje tato nastavení:
Konstanta |
Hodnota |
Popis |
vbUseSystem |
0 |
Použijte nastavení rozhraní NLS API. |
vbSunday |
1 |
Neděle (výchozí) |
vbMonday |
2 |
Pondělí |
vbTuesday |
3 |
úterý |
vbWednesday |
4 |
Středa |
vb VisualSday |
5 |
Čtvrtek |
vbF poušty |
6 |
Pátek |
vbSaturday |
7 |
Sobota |
Konstanta |
Hodnota |
Popis |
vbUseSystem |
0 |
Použijte nastavení rozhraní NLS API. |
vbFirst Se1 |
1 |
Začněte týdnem, do kterého se vyskytuje 1. leden (výchozí nastavení). |
vbFirstFourDays |
2 |
Začněte prvním týdnem, který má v novém roce minimálně čtyři dny. |
vbFirstFullWeek |
3 |
Začněte prvním celým týdnem roku. |
Poznámky
Pomocí funkce DateDiff můžete určit počet zadaných časových intervalů 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.
Pokud chcete vypočítat počet dní mezi datem 1 a datem 2,můžete použít den v roce ("y") nebo den ("d"). Pokud je interval dentýd dne ("w"), vrátí funkce DateDiff počet týdnů mezi dvěma daty. Pokud datum1 spadá v pondělí, funkce DateDiff spočítá počet pondělí do data2. Spočítá datum2, ale ne datum1. Pokud je interval Week ("ww"), vrátí ale funkce DateDiff počet kalendářních týdnů mezi dvěma daty. Spočítá počet neděle mezi datem1 a datem2.Funkce DateDiff spočítá datum2, pokud připadne v neděli. Ale nepočítá se datum1,a to ani v případě, že spadá do neděle.
Pokud datum1 odkazuje na pozdější bod v čase než datum2,vrátí funkce DateDiff záporné číslo.
Argument první_den_v_týdnu 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 tento rok vynutíte, vloží se do kódu při každém vyhodnocení výrazu datum1 nebo datum2 aktuální rok. Díky tomu je možné psát kód, který se může používat v různých letech.
Při porovnání 31. prosince a 1. ledna v bezprostředně úspěšném roce vrátí funkce DateDiff for Year (yyyy) hodnotu 1, i když uplynul jen den.
Poznámka: Pokud je v případě data1 a data2nastavená vlastnost Kalendář v gregoriánském kalendáři, musí být zadaným datem gregoriánský kalendář. Pokud je kalendářem kalendář hidžra, musí být zadaným datem kalendář hidžra.
Příklady dotazu DateDiff Query
Výraz |
Výsledky |
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Výraz1 FROM Prodej_produktů; |
Vrátí rozdíl mezi datem 2 a datem 1 (nejstarší datum a datum2 jako nejnovější) jako počet roků. Výsledek: Rozdíl mezi hodnotami v poli DateofSale a datem "01/01/2010" jako počet roků. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi datem systému a datem dateofSale jako počet čtvrtletí (podle kalendáře roku) a zobrazí ve sloupci DaysSinceSale. vrátí rozdíl mezi systémovým datem a datem "DateofSale" jako počet "Měsíce" a zobrazí ve sloupci DaysSinceSale. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a datem dateofSale jako počet "Days" a zobrazí ve sloupci DaysSinceSale. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a datem dateofSale jako počet "Days" a zobrazí ve sloupci DaysSinceSale. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a datem dateofSale jako počet "pracovních dnů" a zobrazí ve sloupci DaysSinceSale. Pokud "DateofSale" spadá v pondělí, funkce DateDiff spočítá počet pondělí do systémového data. Spočítá systémové datum, ale ne hodnotu v poli DateofSale. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi datem systému a datem dateofSale jako počet "Týdny kalendáře" a zobrazí ve sloupci DaysSinceSale. Spočítá počet nedělí mezi daty DateofSale a System Date. Pokud připadne v neděli, spočítá systémové datum. ale nepočítá "DateofSale", i když připadne v neděli. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a datem datetime jako počet hodin a zobrazí ve sloupci DaysSinceSale. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a datem datetime jako počet minut a zobrazí ve sloupci DaysSinceSale. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Vrátí rozdíl mezi systémovým datem a datem datetime jako počet sekund a zobrazí ve sloupci DaysSinceSale. |
Vzorový výraz
Použití funkce DateDiff ve výrazu Funkci DateDiff můžete použít všude, kde můžete 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 obdržet. Funkci DateDiff můžete použít s textovým polem ve formuláři k zobrazení počtu dní před odesláním objednávky.
Za předpokladu, že odeslání objednávky trvá deset dní, nastavíte vlastnost Zdroj ovládacího prvku textového pole takto:
=DateDiff("d"; Now(); [Objednávky].[ ReceiveBefore])-10
Když formulář otevřete ve formulářovém zobrazení, zobrazí se v textovém poli počet dní, které zbývá před odesláním objednávky. Pokud zbývá méně než 10 dní, než zákazník potřebuje objednávku obdržet, bude číslo v textovém poli záporné a bude indikovat, o kolik dní později bude objednávka po odeslání okamžitě.
Příklad jazyka VBA
Použití funkce DateDiff v kódu jazyka VBA
V tomto příkladu se pomocí funkce DateDiff zobrazí počet dní mezi daným datem a dnešním dnem.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg