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:
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.
DateDiff-queryvoorbeelden
Expression |
Resultaten |
---|---|
SELECT DateDiff("yyyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductAles; |
Retourneert het verschil tussen Datum2 en Datum1 (beschouw Datum1 als oudste en Datum2 als nieuwste) als aantal 'Jaren'. Resultaat: verschil tussen de waarden in het veld 'DateofSale' en de datum '01/01/2010' als aantal 'Years'. |
SELECT DateDiff("q";[DateofSale];Date()) AS DaysSinceSale FROM ProductVerkoop; |
Retourneert het verschil tussen de systeemdatum en 'DateofSale' als aantal 'Kwartalen' (op basis van het kalenderjaar) en wordt weergegeven in de kolom 'DaysSinceSale'. retourneert het verschil tussen de systeemdatum en 'DateofSale' als aantal 'Months' en wordt weergegeven in de kolom 'DaysSinceSale'. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSaleSale FROM ProductVerkoop; |
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 ProductVerkoop; |
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 ProductVerkoop; |
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 ProductVerkoop; |
Retourneert het verschil tussen de systeemdatum en 'DateofSale' als aantal 'Kalenderweken' en wordt weergegeven in de kolom 'DaysSinceSale'. Het aantal zondagen tussen 'DateofSale' en 'system date' wordt geteld. De systeemdatum wordt geteld als deze op een zondag valt; maar het telt niet 'DateofSale', zelfs niet als het op een zondag valt. |
SELECT DateDiff("h";[DateTime];Date()) AS DaysSinceSale FROM ProductVerkoop; |
Retourneert het verschil tussen de systeemdatum en 'DateTime' als aantal 'Hours' 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 ProductVerkoop; |
Retourneert het verschil tussen de systeemdatum en 'DateTime' als 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 u expressies kunt gebruiken. 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.
VBA-voorbeeld
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