Returnerar ett värde av datatypen Variant (Long) som anger antalet tidsintervall mellan två datum.
Syntax
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
Funktionen DateDiff har följande argument:
| argument | Beskrivning |
|---|---|
interval |
Obligatoriskt. Stränguttryck som är det tidsintervall som du använder för att beräkna skillnaden mellan date1 och date2. |
date1, date2 |
Obligatoriskt. Variant (Datum). Två datum som du vill använda i beräkningen. |
firstdayofweek |
Valfritt. En konstant som anger den första dagen i veckan. Om du inte anger det antas söndag. |
firstweekofyear |
Valfritt. En konstant som anger årets första vecka. Om du inte anger det är den första veckan den vecka då 1 januari inträffar. |
Inställningar
Argumentet interval har följande inställningar:
| Inställning | Beskrivning |
|---|---|
yyyy |
År |
q |
Kvartal |
m |
Månad |
y |
Dag på året |
d |
Dag |
w |
Veckodag |
ww |
Vecka |
h |
Timme |
n |
Minut |
s |
Sekund |
Argumentet firstdayofweek har följande inställningar:
| Konstant | Värde | Beskrivning |
|---|---|---|
vbUseSystem |
0 | Använder NLS API-inställningen. |
vbSunday |
1 | Söndag (standard) |
vbMonday |
2 | Måndag |
vbTuesday |
3 | Tisdag |
vbWednesday |
4 | Onsdag |
vbThursday |
5 | Torsdag |
vbFriday |
6 | Fredag |
vbSaturday |
7 | Lördag |
| Konstant | Värde | Beskrivning |
|---|---|---|
vbUseSystem |
0 | Använder NLS API-inställningen. |
vbFirstJan1 |
1 | Börjar med veckan då 1 januari inträffar (standard). |
vbFirstFourDays |
2 | Börjar med den första veckan som har minst fyra dagar på det nya året. |
vbFirstFullWeek |
3 | Börjar med den första hela veckan på året. |
Kommentarer
Du kan använda DateDiff funktionen för att avgöra hur många angivna tidsintervall som finns mellan två datum. Du kan till exempel använda DateDiff för att beräkna antalet dagar mellan två datum eller antalet veckor mellan idag och slutet av året.
Om du vill beräkna antalet dagar mellan date1 och date2kan du använda antingen Dag på året ("y") eller Dag ("d"). När interval är Veckodag ("w") DateDiff returneras antalet veckor mellan de två datumen. Om date1 infaller på en måndag DateDiff räknar du antalet måndagar till date2. Det räknas date2 men inte date1. Om interval är Vecka ("ww") DateDiff returnerar dock funktionen antalet kalenderveckor mellan de två datumen. Antalet söndagar mellan date1 och date2.
DateDiff räknas date2 om det faller på en söndag, men det räknas date1inte , även om det infaller på en söndag.
Om date1 refererar till en senare tidpunkt än date2DateDiff returnerar funktionen ett negativt tal.
Argumentet firstdayofweek påverkar beräkningar som använder symbolerna "w" och "ww" intervallsymbolerna.
Om date1 eller date2 är en datumliteral blir det angivna året en permanent del av det datumet. Men om date1 eller date2 omges av dubbla citattecken (" ") och du utelämnar året infogas det aktuella året i koden varje gång date1 eller date2 uttrycket utvärderas. Det gör det möjligt att skriva kod som du kan använda under olika år.
När du jämför 31 december med 1 januari nästa år DateDiff returnerar för År ("yyyy") 1 även om bara en dag har passerat.
Obs
För date1 och date2, om egenskapsinställningen Calendar är gregoriansk, måste det angivna datumet vara gregorianskt. Om kalendern är Hijri måste det datum som anges vara Hijri.
DatumDiff-frågeexempel
| Uttryck | Resultat |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Returnerar skillnaden i år mellan datum 01/01/2010 och värden i fältet DateofSale . |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerar skillnaden i kvartal baserat på kalenderåret mellan systemdatumet och DateofSaleoch visar den i DaysSinceSale kolumnen. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerar skillnaden i dagar mellan systemdatumet och DateofSaleoch visar den i DaysSinceSale kolumnen. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerar skillnaden i dagar mellan systemdatumet och DateofSaleoch visar den i DaysSinceSale kolumnen. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerar skillnaden i veckodagar mellan systemdatumet och DateofSaleoch visar den i DaysSinceSale kolumnen. Om DateofSale infaller på en måndag DateDiff räknar du antalet måndagar fram till systemdatumet. Systemets datum räknas, men inte DateofSale värdet. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerar skillnaden i kalenderveckor mellan systemdatumet och DateofSaleoch visar den i DaysSinceSale kolumnen. Antalet söndagar mellan DateofSale och systemdatumet räknas. Det räknar systemdatumet om det infaller på en söndag, men det räknas DateofSaleinte , även om det infaller på en söndag. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerar skillnaden i timmar mellan systemdatumet och DateTimeoch visar den i DaysSinceSale kolumnen. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerar skillnaden i minuter mellan systemdatumet och DateTimeoch visar den i DaysSinceSale kolumnen. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerar skillnaden i sekunder mellan systemdatumet och DateTimeoch visar den i DaysSinceSale kolumnen. |
Använda funktionen DatumDiff i ett uttryck
Du kan använda DateDiff funktionen var som helst där du kan använda uttryck. Anta till exempel att du har ett formulär som du använder för att uppfylla kundorder. I tabellen Order har du ett fält med namnet ReceiveBefore som innehåller det datum då kunden behöver ta emot beställningen. Du kan använda DateDiff funktionen med en textruta i formuläret för att visa antalet dagar kvar innan ordern måste levereras.
Om det tar tio dagar att leverera en order anger du egenskapen Kontrollkälla för textrutan på följande sätt:
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10
När du öppnar formuläret i formulärvyn visar textrutan antalet dagar kvar innan ordern måste levereras. Om det är mindre än 10 dagar kvar tills kunden behöver ta emot beställningen är talet i textrutan negativt. Det anger hur många dagar försenad beställningen blir om du skickar den omedelbart.
Använda funktionen DatumDiff i VBA-kod
I det DateDiff här exemplet används funktionen för att visa antalet dagar mellan ett visst datum och dagens datum.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg