Geeft een variant (lang) als resultaat die het aantal tijdsintervallen tussen twee opgegeven datums als resultaat geeft.
Syntaxis
DateDiff ( interval, datum1, datum2 [, eerstedagvanweek] [, eersteweekvanjaar] )
De syntaxis van de functie DateDiff bevat deze argumenten:
Tip: In Access 2010 ondersteunt de opbouwfunctie voor expressies IntelliSense, zodat u kunt zien welke argumenten er vereist zijn voor de expressie.
Argument |
Beschrijving |
interval |
Vereist. Een tekenreeksexpressie die het tijdsinterval aangeeft dat u gebruikt om het verschil tussen datum1 en datum2 te berekenen. |
datum1, datum2 |
Vereist. Variant (Datum). De twee datums die u in de berekening wilt gebruiken. |
eerstedagvanweek |
Optioneel. Een constante die de eerste dag van de week aangeeft. Als deze niet is opgegeven, wordt uitgegaan van zondag. |
eersteweekvanjaar |
Optioneel. Een constante die de eerste week van het jaar aangeeft. Als deze niet is opgegeven, wordt de week waarin 1 januari valt, als eerste week beschouwd. |
Instellingen
Het intervalargument heeft de volgende instellingen:
Instelling |
Beschrijving |
jjjj |
Jaar |
k |
Kwartaal |
m |
Maand |
j |
Dag van jaar |
d |
Dag |
w |
Weekdag |
ww |
Week |
h |
Uur |
N |
Minuut |
s |
Seconde |
Het argument eerstedagvanweek heeft deze instellingen:
Constante |
Waarde |
Beschrijving |
vbUseSystem |
0 |
De NLS API-instelling gebruiken. |
vbSunday |
1 |
Zondag (standaard) |
vbMonday |
2 |
Maandag |
vbTuesday |
3 |
Dinsdag |
vbWednesday |
4 |
Woensdag |
vbThursday |
5 |
Donderdag |
vbFriday |
6 |
Vrijdag |
vbSaturday |
7 |
Zaterdag |
Constante |
Waarde |
Beschrijving |
vbUseSystem |
0 |
De NLS API-instelling gebruiken. |
vbFirstJan1 |
1 |
Beginnen met de week waarin 1 januari valt (standaard). |
vbFirstFourDays |
2 |
Beginnen met de eerste week die minimaal vier dagen in het nieuwe jaar heeft. |
vbFirstFullWeek |
3 |
Beginnen met de eerste volledige week van het jaar. |
Opmerkingen
U kunt de functie DateDiff gebruiken om te bepalen hoeveel opgegeven tijdsintervallen er bestaan tussen twee datums. U kunt DateDiff bijvoorbeeld gebruiken om het aantal dagen te berekenen tussen twee datums, of het aantal weken tussen vandaag en het einde van het jaar.
Als u het aantal dagen tussen datum1 en datum2 wilt berekenen, gebruikt u de dag van het jaar ('y') of de dag ('d'). Als interval is ingesteld op een dag van de week ('w'), retourneert DateDiff het aantal weken tussen de twee datums. Als datum1 op een maandag valt, telt DateDiff het aantal maandagen tot datum2. datum2 wordt wel meegeteld, maar datum1 niet. Als interval echter is ingesteld op een week ('ww'), retourneert de functie DateDiff het aantal kalenderweken tussen de twee datums. De functie telt het aantal zondagen tussen datum1 en datum2. DateDiff telt datum2 mee als dit een zondag is, maar datum1 wordt niet meegeteld, ook niet als dit een zondag is.
Als datum1 verwijst naar een later tijdstip dan datum2, retourneert DateDiff een negatief getal.
Het argument eerstedagvanweek is van invloed op berekeningen waarin de intervalsymbolen 'w' en 'ww' worden gebruikt.
Als datum1 of datum2 een letterlijke datum is, wordt het opgegeven jaar een permanent onderdeel van die datum. Als datum1 of datum2 echter tussen dubbele aanhalingstekens (" ") staat, en u het jaar weglaat, wordt het huidige jaar ingevoegd in de code wanneer de expressie met datum1 of datum2 wordt geëvalueerd. Hierdoor kunt u code schrijven die in verschillende jaren kan worden gebruikt.
Als u DateDiff uitvoert voor de periode 31 december tot 1 januari van het volgende jaar, retourneert de functie voor jaar ("jjjj") altijd 1, zelfs als er maar één dag is verstreken.
Opmerking: Als de eigenschap Calendar voor datum1 en datum2 is ingesteld op Gregoriaans, moet de opgegeven datum de Gregoriaanse kalender volgen. Als de kalender Hijri is, moet de opgegeven datum de notatie van de Hijri kalender volgen.
Voorbeelden van DateDiff-query's
Expressie |
Resultaten |
SELECT DateDiff("yyyy",#01-01-2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Retourneert het verschil tussen Datum2 en Datum1 (als u Datum1 als oud beschouwt en Datum2 als nieuw) als aantal 'Jaren'. Resultaat: Het verschil tussen de waarden in het veld 'DateofSale' en de datum '01-01-2010' als aantal 'Jaren'. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retourneert het verschil tussen de systeemdatum en 'DateofSale' als aantal Kwartalen (op basis van kalenderjaar) en wordt weergegeven in de kolom 'DaysSinceSale'. retourneert het verschil tussen de systeemdatum en 'DateofSale' als aantal 'Maanden' en wordt weergegeven in de kolom DaysSinceSale. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retourneert het verschil tussen de systeemdatum en 'DateofSale' als aantal 'Dagen' en wordt weergegeven in de kolom DaysSinceSale. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retourneert het verschil tussen de systeemdatum en 'DateofSale' als aantal 'Dagen' en wordt weergegeven in de kolom DaysSinceSale. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retourneert het verschil tussen de systeemdatum en 'DateofSale' als aantal 'Weekdagen' en wordt weergegeven in de kolom DaysSinceSale. Als 'DateofSale' op een maandag valt, telt DateDiff het aantal maandagen tot de systeemdatum. De systeemdatum wordt geteld, maar niet de waarde in 'DateofSale'. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retourneert het verschil tussen de systeemdatum en 'DateofSale' als aantal 'Kalenderweken' en wordt weergegeven in de kolom 'DaysSinceSale'. Het telt het aantal zondagen tussen 'DateofSale' en 'systeemdatum'. Systeemdatums worden meegetelde als deze op een zondag valt. maar 'DateofSale' wordt niet meegetelde, zelfs niet als het op een zondag valt. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Retourneert het verschil tussen de systeemdatum en 'DateTime' als het aantal 'Uren' en wordt weergegeven in de kolom 'DaysSinceSale'. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Retourneert het verschil tussen de systeemdatum en 'DateTime' als aantal 'Minuten' en wordt weergegeven in de kolom 'DaysSinceSale'. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Retourneert het verschil tussen de systeemdatum en 'DateTime' als het aantal 'seconden' en wordt weergegeven in de kolom DaysSinceSale. |
Voorbeeld van een expressie
De functie DateDiff gebruiken in een expressie U kunt de functie DateDiff overal gebruiken waar expressies zijn gebruikt. Stel dat u een formulier hebt voor het invoeren van orders van klanten. De tabel Orders bevat een veld met de naam OntvangenVoor met daarin de datum waarop de order uiterlijk moet zijn bezorgd bij de klant. U kunt dan de functie DateDiff gebruiken met een tekstvak op het formulier om het aantal dagen weer te geven voordat de order moet worden verzonden.
Stel dat het gemiddeld tien dagen duurt om een order uit te leveren. U moet de eigenschap ControlSource van het tekstvak dan als volgt instellen:
=DateDiff(“d”, Now(), [Orders].[OntvangenVoor])-10
Wanneer u het formulier opent in de formulierweergave, bevat het tekstvak het aantal dagen dat nog resteert om de order te verzenden. Als er minder dan tien dagen resteren voordat de klant de order moet ontvangen, is de waarde in het tekstvak negatief en is dit het aantal dagen dat de order te laat wordt geleverd als deze nu direct wordt verzonden.
Voorbeeld van VBA
De functie DateDiff gebruiken in VBA-code
In dit voorbeeld wordt de functie DateDiff gebruikt om het aantal dagen tussen een bepaalde datum en vandaag weer te geven.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg