Returnerer en variant (langt) som angir antallet intervaller mellom to angitte datoer.
Syntaks
DateDiff ( intervall; dato1; dato2 [, første dag i uken] [, første uke i året] )
Syntaksen for funksjonen DateDiff har følgende argumenter:
Argument |
Beskrivelse |
---|---|
intervall |
Obligatorisk. Strenguttrykk som er tidsintervallet du bruker til å beregne forskjellen mellom dato1 og dato2. |
dato 1, dato2 |
Obligatorisk. Variant (dato). To datoer som skal brukes i beregningen. |
første dag i uken |
Valgfritt. En konstant som angir første dag i uken. Hvis den ikke er angitt, brukes søndag. |
første uke i året |
Valgfritt. En konstant som angir den første uken i året. Hvis den ikke er angitt, antas den første uken å være uken der 1. januar forekommer. |
Innstillinger
Intervallet argument har disse innstillingene:
Innstilling |
Beskrivelse |
---|---|
åååå |
År |
q |
Kvartal |
m |
Måned |
y |
Dag i året |
d |
Dag |
w |
Weekday |
ww |
Uke |
t |
Time |
n |
Minutt |
s |
Sekund |
Argumentet første dag i uken har disse innstillingene:
Konstant |
Value |
Beskrivelse |
---|---|---|
vbUseSystem |
0 |
Bruk NLS API-innstillingen. |
Vbsunday |
1 |
Søndag (standard) |
Vbmonday |
2 |
Mandag |
vbTuesday |
3 |
Tirsdag |
vbWednesday |
4 |
Onsdag |
vbThursday |
5 |
Torsdag |
vbFriday |
6 |
Fredag |
vbSaturday |
7 |
Lørdag |
Konstant |
Value |
Beskrivelse |
---|---|---|
vbUseSystem |
0 |
Bruk NLS API-innstillingen. |
vbFirstJan1 |
1 |
Start med uken der 1. januar forekommer (standard). |
vbFirstFourDays |
2 |
Start med den første uken som har minst fire dager i det nye året. |
vbFirstFullWeek |
3 |
Start med første hele uke i året. |
Merknader
Du kan bruke DateDiff-funksjonen til å bestemme hvor mange angitte tidsintervaller som finnes mellom to datoer. Du kan for eksempel bruke DateDiff til å beregne antall dager mellom to datoer eller antall uker mellom i dag og slutten av året.
Hvis du vil beregne antall dager mellom dato1 og dato2, kan du bruke enten dag i året («y») eller dag («d»). Når intervallet er Ukedag ("w"), returnerer DateDiff antall uker mellom de to datoene. Hvis dato1 faller på en mandag, teller DateDiff antallet mandager til dato2. Den teller dato2 , men ikke dato1. Hvis intervallet er Uke ("ww"), returnerer imidlertid DateDiff-funksjonen antall kalenderuker mellom de to datoene. Den teller antall søndager mellom dato 1 og dato2. DateDiff teller dato2 hvis den faller på en søndag. men den teller ikke dato1, selv om den faller på en søndag.
Hvis dato1 refererer til et senere tidspunkt enn dato2, returnerer DateDiff-funksjonen et negativt tall.
Argumentet firstdayofweek påvirker beregninger som bruker intervallsymbolene «w» og «ww».
Hvis dato1 eller dato2 er en datolitteral, blir det angitte året en permanent del av denne datoen. Hvis dato1 eller dato2 imidlertid er omsluttet av doble anførselstegn (" "), og du utelater året, settes gjeldende år inn i koden hver gang dato1 - eller dato2-uttrykket evalueres. Dette gjør det mulig å skrive kode som kan brukes i forskjellige år.
Når du sammenligner 31. desember til 1. januar i det umiddelbart etterfølgende året, returnerer DateDiff for Year ("yyyy") 1, selv om bare en dag har gått.
Obs!: Hvis innstillingen for kalenderegenskapen for dato1 og dato2 er gregoriansk, må den angitte datoen være gregoriansk. Hvis kalenderen er Hijri, må den angitte datoen være Hijri.
Eksempler på DateDiff-spørring
Expression |
Resultater |
---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Returnerer differansen mellom Date2 og Date1 (vurder Dato1 som eldste og Dato2 som nyeste) som antall år. Resultat: Forskjellen mellom verdiene i feltet «DateofSale» og datoen «01.01.2010» som antallet år. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerer differansen mellom systemdatoen og "DateofSale" som antall kvartaler (basert på kalenderår) og vises i kolonnen "DaysSinceSale". returnerer differansen mellom systemdatoen og DateofSale som antall måneder og vises i kolonnen DaysSinceSale. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerer differansen mellom systemdatoen og DateofSale som antall dager og vises i kolonnen DaysSinceSale. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerer differansen mellom systemdatoen og DateofSale som antall dager og vises i kolonnen DaysSinceSale. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerer differansen mellom systemdatoen og DateofSale som antall ukedager og vises i kolonnen DaysSinceSale. Hvis «DateofSale» faller på en mandag, teller DateDiff antallet mandager frem til systemdato. Den teller systemdato, men ikke verdien i DateofSale. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerer differansen mellom systemdatoen og DateofSale som antall kalenderuker og vises i kolonnen DaysSinceSale. Den teller antall søndager mellom «DateofSale» og «systemdato». Den teller systemdatoen hvis den faller på en søndag. men det teller ikke «DateofSale», selv om det faller på en søndag. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerer differansen mellom systemdatoen og DateTime som antall timer og vises i kolonnen DaysSinceSale. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerer differansen mellom systemdatoen og DateTime som antall minutter og vises i kolonnen DaysSinceSale. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Returnerer differansen mellom systemdatoen og DateTime som antall sekunder og vises i kolonnen DaysSinceSale. |
Eksempel på uttrykk
Bruke DateDiff-funksjonen i et uttrykk Du kan bruke DateDiff-funksjonen der du kan bruke uttrykk. Anta for eksempel at du har et skjema som du bruker til å oppfylle kundeordrer. I Ordrer-tabellen har du et felt kalt ReceiveBefore som inneholder datoen da kunden må motta ordren. Du kan bruke DateDiff-funksjonen med en tekstboks i skjemaet for å vise hvor mange dager som gjenstår før ordren må sendes.
Forutsatt at det tar ti dager å sende en ordre, angir du kontrollkildeegenskapen for tekstboksen som følger:
=DateDiff("d"; Now(), [Orders].[ ReceiveBefore])-10
Når du åpner skjemaet i skjemavisning, viser tekstboksen antall dager igjen før ordren må sendes. Hvis det er mindre enn 10 dager igjen før kunden må motta bestillingen, er tallet i tekstboksen negativt og angir hvor mange dager for sent bestillingen blir hvis den sendes umiddelbart.
VBA-eksempel
Bruke DateDiff-funksjonen i VBA-kode
Dette eksemplet bruker DateDiff-funksjonen til å vise antall dager mellom en gitt dato og i dag.
Dim TheDate As Date ' Declare variables.
Dim Msg TheDate = InputBox("Enter a date") Msg = "Days from today: " & DateDiff("d", Now, TheDate) MsgBox Msg