Palauttaa variantin (Long), joka määrittää kahden määritetyn päivämäärän välisten aikavälien määrän.
Syntaksi
DateDiff ( aikaväli, päivämäärä1, päivämäärä2 [, viikonensimmäinenpäivä] [, vuodenensimmäinenviikko] )
DateDiff-funktion syntaksilla on seuraavat argumentit:
Argumentti |
Kuvaus |
---|---|
aikaväli |
Pakollinen. Merkkijonolauseke, joka on päivämäärä1:n ja päivämäärä2:n välisen eron laskemiseen käytettävä aikaväli. |
päivämäärä1, päivämäärä2 |
Pakollinen. Muuttuja (päivämäärä). Laskutoimituksessa käytettävät kaksi päivämäärää. |
viikonensimmäinenpäivä |
Valinnainen. vakio, joka määrittää viikon ensimmäisen päivän. Jos tätä argumenttia ei määritetä, oletusasetus on sunnuntai. |
vuodenensimmäinenviikko |
Valinnainen. Vakio, joka määrittää vuoden ensimmäisen viikon. Jos tätä ei määritetä, ensimmäisen viikon oletetaan olevan viikko, jolloin tammikuun 1. päivä tapahtuu. |
Asetukset
Aikaväli argumentti-argumentin asetukset ovat seuraavat:
Asetus |
Kuvaus |
---|---|
yyyy |
Vuosi |
q |
Vuosineljännes |
m |
Kuukausi |
y |
Vuoden päivä |
d |
Päivä |
w |
Viikonpäivä |
ww |
Viikko |
h |
Tunti |
n |
Minuutti |
s |
Sekunti |
Viikonensimmäinenpäivä -argumentilla on seuraavat asetukset:
Vakio |
Arvo |
Kuvaus |
---|---|---|
vbUseSystem |
0 |
Käytä NLS API -asetusta. |
vbSunday |
1 |
Sunnuntai (oletus) |
vbMonday |
2 |
Maanantai |
vbTuesday |
3 |
Tiistai |
vbWednesday |
4 |
Keskiviikko |
vbThursday |
5 |
Torstai |
vbFriday |
6 |
Perjantai |
vbSaturday |
7 |
Lauantai |
Vakio |
Arvo |
Kuvaus |
---|---|---|
vbUseSystem |
0 |
Käytä NLS API -asetusta. |
vbFirstJan1 |
1 |
Aloita viikosta, jossa on 1. tammikuuta (oletus). |
vbFirstFourDays |
2 |
Aloita ensimmäisestä viikosta, jossa on vähintään neljä uuden vuoden päivää. |
vbFirstFullWeek |
3 |
Aloita vuoden ensimmäisestä täydestä viikosta. |
Huomautuksia
DateDiff-funktiolla voit selvittää, kuinka monta määritettyä aikaväliä on kahden päivämäärän välissä. Voit laskea DateDiff-funktiolla esimerkiksi päivämäärien välisten päivien määrän tai viikkojen määrän kuluvasta päivämäärästä vuoden loppuun.
Jos haluat laskea päivämäärän1 ja päivämäärä2 välisten päivien määrän, voit käyttää joko Vuoden päivä ("y") tai Päivää ("d"). Kun aikaväli on Viikonpäivä ("w"), DateDiff palauttaa kahden päivämäärän välisten viikkojen määrän. Jos päivämäärä1 on maanantai, DateDiff laskee maanantaiden määrän päivämäärään2 asti. Se laskee päivämäärän2 , mutta ei päivämäärää1. Jos aikaväli on Viikko ("ww"), DateDiff-funktio palauttaa kuitenkin kahden päivämäärän välisten kalenteriviikkojen määrän. Se laskee päivämäärän1 ja päivämäärä2 välisten sunnuntaiten määrän. DateDiff laskee päivämäärän2 , jos se on sunnuntai; mutta se ei laske päivämäärää1, vaikka se olisi sunnuntai.
Jos päivämäärä1 viittaa päivämäärä2-argumenttiin määritettyä päivämäärää myöhempään ajankohtaan, DateDiff-funktio palauttaa negatiivisen luvun.
Viikonensimmäinenpäivä -argumentti vaikuttaa laskutoimituksissa, joissa käytetään aikavälejä tarkoittavia w- ja ww-symboleja.
Jos päivämäärä1 tai päivämäärä2 on päivämääräliteraali, määritetty vuosi liitetään pysyvästi päivämäärään. Jos päivämäärä1 tai päivämäärä2 kirjoitetaan kuitenkin lainausmerkkeihin (" ") ja vuosi jätetään pois, kuluva vuosi lisätään koodiin aina, kun päivämäärä1- tai päivämäärä2-lauseke lasketaan. Näin voidaan kirjoittaa koodia, joka on käyttökelpoista eri vuosina.
Kun päivämäärää 31.12. verrataan seuraavan vuoden päivämäärään 1.1., DateDiff-funktion vuosiasetus (yyyy) palauttaa luvun 1 huolimatta siitä, että vain yksi päivä on kulunut.
Huomautus: Jos kalenterin ominaisuusasetus on Gregoriaaninen, päivämäärä1- ja päivämäärä2-argumenttien päivämäärä täytyy antaa gregoriaanisen kalenterin mukaisena. Islamilaista kalenteria käytettäessä päivämäärä täytyy antaa islamilaisen kalenterin mukaisena.
Esimerkkejä DateDiff-kyselystä
Lauseke |
Tulokset |
---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Palauttaa Päivämäärä2:n ja Päivämäärä1:n välisen eron (päivämäärä1 vanhimpana ja Päivämäärä2 uusimpana) vuosilukuna. Tulos: DateofSale-kentän arvojen ja päivämäärän "01/01/2010" arvojen välinen ero muodossa "Years". |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale-funktion välisen eron vuosineljännesten määränä (kalenterivuoden perusteella) ja näyttää sarakkeen "DaysSinceSale". palauttaa järjestelmän päivämäärän ja DateofSale-funktion välisen eron kuukausien määränä ja näyttää sarakkeessa "DaysSinceSale". |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale-funktion välisen eron päivien määränä, ja se näkyy DaysSinceSale-sarakkeessa. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale-funktion välisen eron päivien määränä, ja se näkyy DaysSinceSale-sarakkeessa. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale-funktion välisen eron viikonpäivien määränä, ja se näkyy DaysSinceSale-sarakkeessa. Jos DateofSale on maanantaina, DateDiff laskee maanantaisen määrän järjestelmän päivämäärään asti. Se laskee järjestelmän päivämäärän, mutta ei dateofsale-arvoa. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale-funktion välisen eron calender-viikkojen määränä, ja se näkyy DaysSinceSale-sarakkeessa. Se laskee sunnuntain määrän päivämäärän "DateofSale" ja "järjestelmän päivämäärä" välillä. Se laskee järjestelmän päivämäärän, jos se on sunnuntai; mutta sitä ei lasketa "DateofSale", vaikka se olisi sunnuntai. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateTime-funktion välisen eron tuntimääränä, ja se näkyy DaysSinceSale-sarakkeessa. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateTime-päivämäärän välisen eron minuuttimääränä, ja se näkyy DaysSinceSale-sarakkeessa. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateTime-funktion välisen eron sekunteina ja näkyy DaysSinceSale-sarakkeessa. |
Esimerkkilauseke
DateDiff-funktion käyttäminen lausekkeessa Voit käyttää DateDiff-funktiota aina, kun voit käyttää lausekkeita. Oletetaan, että sinulla on lomake, johon täytät asiakkaiden tilauksia. Tilaukset-taulukossa on VastaanottoEnnen-niminen kenttä, joka sisältää päivämäärän, johon mennessä asiakkaan on saatava tilaus. Lomakkeen tekstiruudussa olevan DateDiff-funktion avulla voit näyttää, kuinka monta päivää on jäljellä ennen kuin tilaus on toimitettava.
Jos oletetaan, että tilauksen toimitukseen menee kymmenen päivää, määrität tekstiruudun Ohjausobjektin lähde -ominaisuuden seuraavasti:
=DateDiff(”d”, Now(), [Tilaukset].[VastaanottoEnnen])-10
Kun avaat lomakkeen lomakenäkymään, tekstiruudussa näkyy, kuinka monta päivää tilauksen lähetyspäivään on. Jos päiviä on jäljellä alle 10 ennen kuin asiakkaan on vastaanotettava tilaus, tekstiruudun luku on negatiivinen ja se ilmaisee, montako päivää tilaus on myöhässä, jos se toimitetaan heti.
VBA-esimerkki
DateDiff-funktion käyttäminen VBA-koodissa
Tässä esimerkissä annetun päivämäärän ja kuluvan päivämäärän välisten päivien määrä lasketaan DateDiff-funktiolla.
Dim TheDate As Date ' Declare variables.
Dim Msg TheDate = InputBox("Enter a date") Msg = "Days from today: " & DateDiff("d", Now, TheDate) MsgBox Msg