Két dátum között megadott időtartományok számát tartalmazó Variant (hosszú) értéket ad eredményül.
Szintaxis
DateDiff ( intervallum, dátum1, dátum2 [, hételsőnapja] [, évelsőhete] )
A DateDiff függvény argumentumai a következők:
|
argumentumok |
Leírás |
|---|---|
|
intervallum |
Kötelező. Karakterlánc-kifejezés, amely meghatározza a dátum1 és dátum2 közötti különbség kiszámításához használt időintervallumot. |
|
dátum1, dátum2 |
Kötelező megadni. Variant (Dátum). A számításhoz használni kívánt két dátum.. |
|
hételsőnapja |
Nem kötelező. A hét első napját megadó állandó. Ha nincs külön megadva, akkor a rendszer vasárnap használatát feltételezi. |
|
évelsőhete |
Nem kötelező. Az év első hetét megadó állandó. Ha nincs megadva, akkor a rendszer azt a hetet feltételezi, amelyben január 1-je szerepel. |
Beállítások
Az intervallum argumentum a következő beállításokat tartalmazza:
|
Beállítás |
Leírás |
|---|---|
|
yyyy |
Év |
|
q |
Negyedév |
|
m |
Hónap |
|
y |
Év napja |
|
d |
Nap |
|
w |
Hétköznap |
|
ww |
Hét |
|
h |
Óra |
|
n |
Perc |
|
s |
Másodperc |
A hételsőnapja argumentum beállításai a következők:
|
Állandó |
Érték |
Leírás |
|---|---|---|
|
vbUseSystem |
0 |
Az NLS API beállítás használata |
|
vbSunday |
1 |
Vasárnap (alapértelmezett) |
|
vbMonday |
2 |
Hétfő |
|
vbTuesday |
3 |
Kedd |
|
vbWednesday |
4 |
Szerda |
|
vbThursday |
5 |
Csütörtök |
|
vbFriday |
6 |
Péntek |
|
vbSaturday |
7 |
Szombat |
|
Állandó |
Érték |
Leírás |
|---|---|---|
|
vbUseSystem |
0 |
Az NLS API beállítás használata |
|
vbFirstJan1 |
1 |
Az legyen az első hét, amelybe január 1. esik (alapértelmezett). |
|
vbFirstFourDays |
2 |
Az első hét legyen az első olyan hét, amelynek legalább négy napja az új évben van. |
|
vbFirstFullWeek |
3 |
Az első hét legyen az év első teljes hete. |
Megjegyzések
A DateDiff függvény segítségével megállapíthatja, hogy a két dátum között hány telik el a megadott időintervallumból. A DateDiff függvénnyel például ki lehet számolni a két dátum között eltelt napok számát vagy a mai nap és az év vége közötti hetek számát.
A dátum1 és a dátum2 közötti napok számának kiszámítása esetén az év napját („y”) vagy a napot („d”) használhatja egységként. Ha az intervallum értéke hétköznap („w”), akkor a DateDiff függvény a két dátum közötti hetek számát adja eredményül. Ha a dátum1 hétfőre esik, akkor a DateDiff függvény megszámolja a dátum2 dátumig előforduló hétfőket. Beleszámítja a dátum2 dátumot, de a dátum1 dátumot nem. Ha azonban az intervallum értéke a hét („ww”), akkor a DateDiff függvény a két dátum közötti naptári heteket adja eredményül. Megszámolja a dátum1 és a dátum2 közötti vasárnapok számát. A DateDiff beleszámítja a dátum2 dátumot, ha vasárnapra esik, de a dátum1 dátumot még akkor sem számítja bele, ha vasárnapra esik.
Ha a dátum1 időben későbbi, mint a dátum2, akkor a DateDiff függvény negatív számot ad eredményül.
A hételsőnapja argumentum azokat a számításokat befolyásolja, amelyek a „w” és a „ww” intervallumszimbólumokat használják.
Ha a dátum1 vagy a dátum2 dátumkonstans, a megadott év a dátum állandó részévé válik. Ha viszont a dátum1 vagy a dátum2 idézőjelben áll (" "), és elhagyja az évet, a programkódba az aktuális év kerül minden esetben, amikor a rendszer kiértékeli a dátum1 vagy a dátum2 kifejezés értékét. Így írhat olyan kódot is, amely különböző években is használható.
Ha december 31-ét és a következő év január 1-jét hasonlítja össze, akkor a DateDiff függvény az év beállítás („yyyy”) használata esetén 1-et ad eredményül, annak ellenére, hogy csak egy nap telt el.
Megjegyzés: A dátum1 és a dátum2 megadásánál vegye figyelembe, hogy ha a Calendar tulajdonság Gergely-naptárra van állítva, akkor a megadott dátumnak is Gergely-naptár szerintinek kell lennie. Iszlám naptár használata esetén a megadott dátumnak az iszlám naptár szerintinek kell lennie.
DateDiff-lekérdezési példák
|
Expression |
Eredmények |
|---|---|
|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
A Date2 és a Date1 közötti különbséget adja vissza (a Date1 értéket a legrégebbinek, a Date2-et pedig a legújabbnak) a "Years" (Év) értéket. Eredmény: A "DateofSale" mező értékei és a "2010.01.01." dátum "Years" számának különbsége. |
|
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
A rendszerdátum és a "DateofSale" közötti különbséget adja vissza a "Negyedévek" számaként (a calender éve alapján), és a "DaysSinceSale" oszlopban jelenik meg. A a rendszerdátum és a "DateofSale" közötti különbséget "Hónapok" számként adja vissza, és a "DaysSinceSale" oszlopban jelenik meg. |
|
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
A rendszerdátum és a "DateofSale" közötti különbséget "Days" számként adja vissza, és a "DaysSinceSale" oszlopban jelenik meg. |
|
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
A rendszerdátum és a "DateofSale" közötti különbséget "Days" számként adja vissza, és a "DaysSinceSale" oszlopban jelenik meg. |
|
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
A rendszerdátum és a "DateofSale" közötti különbséget adja vissza a "Hétköznapok" számmal, és a "DaysSinceSale" oszlopban jelenik meg. Ha a "DateofSale" hétfőre esik, a DateDiff megszámolja a hétfők számát a rendszer dátumáig. Megszámolja a rendszerdátumot, de a "DateofSale" értékét nem. |
|
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
A rendszerdátum és a "DateofSale" közötti különbséget adja vissza a "Calender Weeks" számként, és a "DaysSinceSale" oszlopban jelenik meg. Megszámolja a "DateofSale" és a "rendszerdátum" közötti vasárnapok számát. Megszámolja a rendszerdátumot, ha vasárnapra esik; de nem számít "DateofSale", még akkor sem, ha nem esik egy vasárnap. |
|
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
A rendszerdátum és a "DateTime" közötti különbséget adja vissza "Óra" számként, és a "DaysSinceSale" oszlopban jelenik meg. |
|
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
A rendszerdátum és a "DateTime" közötti különbséget a "Percek" számaként adja vissza, és a "DaysSinceSale" oszlopban jelenik meg. |
|
SELECT DateDiff("s";[DateTime];Date()) AS DaysSinceSale FROM ProductSales; |
A rendszerdátum és a "DateTime" közötti különbséget adja vissza másodpercben, és a "DaysSinceSale" oszlopban jelenik meg. |
A DateDiff függvény használata kifejezésben
A DateDiff függvényt bárhol használhatja, ahol kifejezéseket használhat. Tegyük fel például, hogy van egy űrlapja, amellyel a vevők rendeléseit rögzíti. A Rendelések táblában található egy KiszállításiHatáridő nevű mező, mely azt a dátumot tartalmazza, ameddig a vevőnek meg kell kapnia a rendelését. A DateDiff függvénnyel megjelenítheti az űrlapja egy szövegmezőjében a rendelés feladásához rendelkezésre álló napok számát.
Ha a rendelések kiszállítása tíz napot vesz igénybe, akkor a szövegmező Mező vagy kifejezés tulajdonságát a következő értékre állíthatja:
=DateDiff("d", Now(), [Orders].[ ReceiveBefore])-10
Amikor ezután megnyitja az űrlapot Űrlap nézetben, a szövegmező megjeleníti, hogy hány nap áll a rendelkezésére a rendelés feladására. Ha a vevőnek 10 napnál rövidebb idő alatt kell megkapnia a rendelését, akkor a szövegmezőben negatív érték jelenik meg, a szám pedig azt jelzi, hogy azonnali szállítás esetén hány nap késéssel fog megérkezni a rendelés.
A DateDiff függvény használata VBA-kódban:
Ebben a példában a DateDiff függvény megjeleníti egy adott nap és a mai nap közötti napok számát.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg