Vraća vrijednost Variant (Long) koja označava broj vremenskih intervala između dva navedena datuma.
Sintaksa
DateDiff (interval, datum1, datum2 [, prvi_dan_u_tjednu] [, prvi_tjedan_u_godini] )
Sintaksa funkcije DateDiff sadrži ove argumente:
| Argument | Opis |
|---|---|
| interval | Obavezno. Nizovni izraz koji označava vremenski interval koji koristite za izračun razlike između datuma1 i datuma2. |
| datum1, datum2 | Obavezno. Variant (datum). Dva datuma koja želite koristiti za izračun. |
| prvi_dan_u_tjednu | Neobavezno. Konstanta koja određuje prvi dan u tjednu. Ako nije određena, kao prvi dan u tjednu koristi se nedjelja. |
| prvi_tjedan_u_godini | Neobavezno. Konstanta koja određuje prvi tjedan u godini. Ako nije određena, kao prvi tjedan koristi se tjedan u kojem je 1. siječnja. |
Postavke
Argument intervala ima sljedeće postavke:
| Postavka | Opis |
|---|---|
| yyyy | Godina |
| q | Tromjesečje |
| m | Mjesec |
| y | Dan u godini |
| d | Dan |
| w | Weekday |
| ww | Tjedan |
| h | Sat |
| n | Minuta |
| s | Sekunda |
Argument prvi_dan_u_tjednu ima sljedeće postavke:
| Konstanta | Vrijednost | Opis |
|---|---|---|
| vbUseSystem | 0 | Koristite postavku NLS API-ja. |
| vbSunday | 1 | Nedjelja (zadano) |
| vbMonday | 2 | Ponedjeljak |
| vbutorak | 3 | utorak |
| vbSrijeda | 4 | Srijeda |
| vbčetvrtak | 5 | Četvrtak |
| vbpetak | 6 | Petak |
| vbSaturday | 7 | Subota |
| Konstanta | Vrijednost | Opis |
|---|---|---|
| vbUseSystem | 0 | Koristite postavku NLS API-ja. |
| vbFirstJan1 | 1 | Počnite s tjednom u kojem je 1. siječnja (zadano). |
| vbFirstFourDays | 2 | Započnite s prvim tjednom koji ima najmanje četiri dana u novoj godini. |
| vbFirstFullWeek | 3 | Počnite s prvim punim tjednom u godini. |
Napomene
Funkciju DateDiff možete koristiti da biste odredili koliko određenih vremenskih intervala postoji između dva datuma. DateDiff možete, primjerice, koristiti za izračun broja dana između dvaju datuma ili broja tjedana između današnjeg dana i kraja godine.
Da biste izračunali broj dana između datum1 i datum2, možete koristiti ili Dan u godini ("y") ili Dan ("d"). Kada je interval Weekday ("w"), DateDiff vraća broj tjedana između dva datuma. Ako datum1 pada na ponedjeljak, DateDiff broji ponedjeljke do datuma2. Računa datum2 , ali ne i datum1. No ako je interval Tjedan ("ww"), funkcija DateDiff vraća broj kalendarskih tjedana između dva datuma. Broji nedjelje između datum1 i datum2. DateDiff broji datum2 ako pada u nedjelju; ali ne računa datum1, čak i ako pada u nedjelju.
Ako datum1 upućuje na kasniju vremensku točku od datuma2, funkcija DateDiff vraća negativan broj.
Argument prvi_dan_u_tjednu utječe na izračune koji koriste simbole intervala "w" i "ww".
Ako je datum1 ili datum2 doslovni datum, navedena godina postaje trajni dio tog datuma. No ako su argumenti datum1 ili datum2 u dvostrukim navodnicima (" "), a vi izostavite godinu, trenutna godina bit će umetnuta u kod svaki put kada se izračunava izraz datum1 ili datum2 . To omogućuje pisanje koda koji se može koristiti u različitim godinama.
Kada uspoređujemo 31. prosinca i 1. siječnja sljedeće godine, DateDiff za godinu ("yyyy") vraća 1, iako je prošao samo jedan dan.
Napomena
Ako je za datum1 i datum2 postavka svojstva Calendar gregorijanski, navedeni datum mora biti gregorijanski. Ako je kalendar hidžra kalendar, navedeni datum mora biti islamski kalendar.
Primjeri upita za DateDiff
| Izraz | Rezultati |
|---|---|
| SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; | Vraća razliku između tablica Datum2 i Datum1 (smatrajte Datum1 najstarijim, a Datum2 najnovijim) kao broj "godina". Rezultat: razlika između vrijednosti u polju "DatumProdaje" i datuma "01/01/2010" kao broj "Godina". |
| SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; | Vraća razliku između sistemskog datuma i stavke "DatumProdaje" kao broj "Tromjesečja" (temeljeno na godini kalendara) i prikazuje se u stupcu "DaniPoslaProdaje". vraća razliku između datuma sustava i vrijednosti "DateofSale" kao broj "Mjeseci" i prikazuje u stupcu "DaysSinceSale". |
| SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; | Vraća razliku između datuma sustava i vrijednosti "DatumProdaje" kao broj dana i prikazuje se u stupcu "DaniSinceSale". |
| SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; | Vraća razliku između datuma sustava i vrijednosti "DatumProdaje" kao broj dana i prikazuje se u stupcu "DaniSinceSale". |
| SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; | Vraća razliku između datuma sustava i vrijednosti "DatumProdaje" kao broj vrijednosti "Dani u tjednu" i prikazuje se u stupcu "DaniOdProdaje". Ako "DateofSale" pada na ponedjeljak, DateDiff broji ponedjeljke do datuma sustava. Broji sistemski datum, ali ne i vrijednost u stupcu "DatumProdaje". |
| SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; | Vraća razliku između datuma sustava i vrijednosti "DatumProdaje" kao broj "tjedana kalendara" i prikazuje se u stupcu "DaniOdProdaje". Broji nedjelje između stavke "DateofSale" i "system date" (datuma sustava). Brojat će sistemske datume ako padne u nedjelju; ali ne računa se "DateofSale", čak i ako padne u nedjelju. |
| SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; | Vraća razliku između sistemskog datuma i vrijednosti "DateTime" kao broj "Sati" i prikazuje se u stupcu "DaysSinceSale". |
| SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; | Vraća razliku između datuma sustava i vrijednosti "DateTime" kao broj "Minutes" i prikazuje se u stupcu "DaysSinceSale". |
| SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; | Vraća razliku između datuma sustava i vrijednosti "DateTime" kao broj "sekundi" i prikazuje se u stupcu "DaysSinceSale". |
Korištenje funkcije DateDiff u izrazu
Funkciju DateDiff možete koristiti svugdje gdje možete koristiti izraze. Pretpostavimo, na primjer, da imate obrazac koji koristite za ispunjavanje narudžbi kupaca. U tablici Narudžbe imate polje pod nazivom ReceiveBefore koje sadrži datum do kojeg kupac mora primiti narudžbu. Funkciju DateDiff možete koristiti s tekstnim okvirom na obrascu da biste prikazali broj dana koji je preostao do otpreme narudžbe.
Uz pretpostavku da je za isporuku narudžbe potrebno deset dana, svojstvo Izvor kontrole tekstnog okvira postavljate na sljedeći način:
=DateDiff("d"; Now(), [Narudžbe].[ ReceiveBefore])-10
Kada obrazac otvorite u prikazu obrasca, u tekstnom se okviru prikazuje broj dana koji je preostao do otpreme narudžbe. Ako je do trenutka kada kupac treba primiti narudžbu ima manje od 10 dana, broj u tekstnom okviru negativan je i označava koliko će dana kasniti narudžba ako se odmah isporuči.
Korištenje funkcije DateDiff u kodu programskog jezika VBA
U ovom primjeru se pomoću funkcije DateDiff prikazuje broj dana između navedenog datuma i današnjeg dana.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg