Palauttaa variantin (pitkä), joka määrittää kahden päivämäärän välisten aikavälien määrän.
Syntaksi
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
DateDiff Funktiolla on seuraavat argumentit:
| Argumentti | Kuvaus |
|---|---|
interval |
Pakollinen. Merkkijonolauseke, joka on aikaväli, jonka avulla lasketaan jadate1-.date2 |
date1, date2 |
Pakollinen. Muuttuja (päivämäärä). Laskutoimituksessa käytettävät kaksi päivämäärää. |
firstdayofweek |
Valinnainen. Vakio, joka määrittää viikon ensimmäisen päivän. Jos et määritä sitä, laskutoimituksessa käytetään oletusasetusta, joka on sunnuntai. |
firstweekofyear |
Valinnainen. Vakio, joka määrittää vuoden ensimmäisen viikon. Jos et määritä sitä, ensimmäinen viikko on viikko, jolle tammikuun 1. päivä sijoittuu. |
Asetukset
Argumentilla interval on seuraavat asetukset:
| Asetus | Kuvaus |
|---|---|
yyyy |
Vuosi |
q |
Neljännes |
m |
Kuukausi |
y |
Vuoden päivä |
d |
Päivä |
w |
Weekday |
ww |
Viikko |
h |
Tunti |
n |
Minuutti |
s |
Sekunti |
Argumentilla firstdayofweek on seuraavat asetukset:
| Vakio | Arvo | Kuvaus |
|---|---|---|
vbUseSystem |
0 | Käyttää 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äyttää NLS API -asetusta. |
vbFirstJan1 |
1 | Alkaa viikosta, johon tammikuun 1. päivä sijoittuu (oletus). |
vbFirstFourDays |
2 | Alkaa ensimmäisestä viikosta, jossa on vähintään neljä uuden vuoden päivää. |
vbFirstFullWeek |
3 | Alkaa vuoden ensimmäisestä täydestä viikosta. |
Huomautuksia
Funktion DateDiff avulla voit selvittää, kuinka monta määritettyä aikaväliä on kahden päivämäärän välissä. Voit esimerkiksi DateDiff laskea kahden päivämäärän välisten päivien määrän tai viikkojen määrän kuluvasta päivämäärästä vuoden loppuun.
Jos haluat laskea ja-argumentin ja , date2välisten date1 päivien määrän, voit käyttää joko vuoden päivää ("y") tai päivää ("d"). When interval is Viikonpäivä ("w"), DateDiff palauttaa kahden päivämäärän välisten viikkojen määrän. Jos date1 osuu maanantaille, DateDiff laskee maanantaiden määrän .date2 Sillä on date2 merkitystä, mutta ei date1. Jos interval se on DateDiff Viikko ("ww"), funktio palauttaa kuitenkin kahden päivämäärän välisten kalenteriviikkojen määrän. Se laskee sunnuntaiden määrän jadate1-.date2
DateDiff laskee date2 , jos se osuu sunnuntaille, mutta sitä ei lasketa date1, vaikka se olisi sunnuntaille.
Jos viittaa date1 myöhempään ajankohtaan kuin date2, DateDiff funktio palauttaa negatiivisen luvun.
Argumentti firstdayofweek vaikuttaa laskutoimituksiin, "w" joissa käytetään ja-välimerkkejä "ww" .
Jos date1 tai date2 on päivämääräliteraali, määritetty vuosi liitetään pysyvästi päivämäärään. Jos date1 or date2 on kuitenkin lainausmerkeissä (" ") ja vuosi jätetään pois, kuluva vuosi lisätään koodiin aina, kun date1 tai-lauseke date2 lasketaan. Näin voit kirjoittaa koodia, jota voit käyttää eri vuosina.
Kun päivämäärää 31.12. verrataan seuraavan vuoden päivämäärään 1.1., vuosi DateDiff ("yyyy") palauttaa arvon 1, vaikka vain yksi päivä on kulunut.
Huomautus
date1
date2
Calendar Jos ominaisuusasetus on gregoriaaninen, päivämäärä täytyy antaa gregoriaaninen. Islamilaista kalenteria käytettäessä päivämäärä täytyy antaa islamilaisen kalenterin mukaisena.
DateDiff-kyselyesimerkkejä
| Lauseke | Tulokset |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Palauttaa päivämäärän 01/01/2010 ja kentän arvojen DateofSale välisen eron vuosina. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale, välisen eron kalenterivuoden vuosineljänneksissä ja näyttää sen DaysSinceSale sarakkeessa. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale, välisen eron päivinä ja näyttää sen DaysSinceSale sarakkeessa. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale, välisen eron päivinä ja näyttää sen DaysSinceSale sarakkeessa. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale, välisen eron viikonpäivinä ja näyttää sen sarakkeessa DaysSinceSale . Jos DateofSale osuu maanantaille, DateDiff laskee järjestelmäpäivämäärään asti kuluneiden maanantaiden määrän. Se laskee järjestelmän päivämäärän, mutta ei arvoa DateofSale . |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateofSale, välisen eron kalenteriviikkoina ja näyttää sen DaysSinceSale sarakkeessa. Se laskee sunnuntaiden määrän järjestelmän päivämäärän välillä DateofSale . Se laskee järjestelmän päivämäärän, jos se on sunnuntaille, mutta sitä ei lasketa DateofSale, vaikka se olisi sunnuntaille. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateTime, välisen eron tunteina ja näyttää sen DaysSinceSale sarakkeessa. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateTime, välisen eron minuutteina ja näyttää sen DaysSinceSale sarakkeessa. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Palauttaa järjestelmän päivämäärän ja DateTime, eron sekunteina ja näyttää sen DaysSinceSale sarakkeessa. |
DateDiff-funktion käyttäminen lausekkeessa
Voit käyttää funktiota DateDiff missä tahansa, missä voit käyttää lausekkeita. Oletetaan, että sinulla on lomake, johon täytät asiakkaiden tilauksia. Tilaukset-taulukossa on kenttä nimeltä ReceiveBefore , joka sisältää päivämäärän, johon mennessä asiakkaan on saatava tilaus. Voit käyttää DateDiff funktiota lomakkeessa olevan tekstiruudun kanssa näyttämään, kuinka monta päivää on jäljellä ennen kuin tilaus on toimitettava.
Jos oletetaan, että tilauksen toimitukseen menee kymmenen päivää, määritä tekstiruudun Ohjausobjektin lähde -ominaisuus seuraavasti:
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-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. Se ilmaisee, montako päivää tilaus on myöhässä, jos lähetät sen heti.
DateDiff-funktion käyttäminen VBA-koodissa
Tässä esimerkissä DateDiff funktiolla näytetään tietyn päivämäärän ja kuluvan päivän välisten päivien määrä.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg