DateDiff, functie
Van toepassing op
Geeft een variant (lang) als resultaat die het aantal tijdsintervallen tussen twee opgegeven datums als resultaat geeft.
Syntaxis
DateDiff (interval, date1, date2 [, firstdayofweek] [, firstweekofyear] )
De syntaxis van de functie DateDiff bevat deze argumenten:
| Argument | Beschrijving |
|---|---|
| interval | Vereist. Tekenreeksexpressie die het tijdsinterval is 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 deze 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 firstdayofweek 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, kunt u Dag van het jaar ('y') of Dag ('d') gebruiken. Wanneer interval Weekdag ('w' ) is, geeft DateDiff het aantal weken tussen de twee datums als resultaat. Als datum1 op een maandag valt, telt DateDiff het aantal maandagen tot datum2. Het telt datum2 , maar niet datum1. Als interval echter Week (ww) is, retourneert de functie DateDiff het aantal kalenderweken tussen de twee datums. Het aantal zondagen tussen datum1 en datum2 wordt geteld. DateDiff telt datum2 als deze valt op een zondag; maar datum1 wordt niet geteld, zelfs niet als het op een zondag valt.
Als date1 verwijst naar een later tijdstip dan datum2, retourneert de functie DateDiff een negatief getal.
Het argument firstdayofweek is van invloed op berekeningen die gebruikmaken van de intervalsymbolen 'w' en 'ww'.
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 uw code telkens wanneer de datum1 - of datum2-expressie 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
Voor datum1 en datum2 geldt dat als de eigenschapsinstelling Calendar Gregoriaans is, de opgegeven datum Gregoriaans moet zijn. Als de kalender Hijri is, moet de opgegeven datum de notatie van de Hijri kalender volgen.
DateDiff-queryvoorbeelden
| Expressie | 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'. |
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].[ ReceiveBefore])-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.
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