Zwraca wartość typu wariant (dług) określającą liczbę interwałów między dwiema datami.
Składnia
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
Funkcja DateDiff ma następujące argumenty:
| Argument | Opis |
|---|---|
interval |
Argument wymagany. Wyrażenie ciągu będące interwałem czasu używanym do obliczenia różnicy między date1 a date2. |
date1, date2 |
Argument wymagany. Wariant (data). Dwie daty, które mają zostać użyte w obliczeniach. |
firstdayofweek |
Argument opcjonalny. Stała określająca pierwszy dzień tygodnia. Jeśli nie zostanie określona, przyjmuje się, że jest to niedziela. |
firstweekofyear |
Argument opcjonalny. Stała określająca pierwszy tydzień roku. Jeśli nie określisz tej wartości, pierwszy tydzień będzie tygodniem, w którym występuje 1 stycznia. |
Ustawienia
Argument interval ma następujące ustawienia:
| Ustawienie | Opis |
|---|---|
yyyy |
Rok |
q |
Kwartał |
m |
Miesiąc |
y |
Dzień roku |
d |
Dzień |
w |
Weekday |
ww |
Tydzień |
h |
Godzina |
n |
Minuta |
s |
Sekunda |
Argument firstdayofweek ma następujące ustawienia:
| Stała | Value (Wartość) | Opis |
|---|---|---|
vbUseSystem |
0 | Używa ustawienia interfejsu API funkcji NLS. |
vbSunday |
1 | Niedziela (domyślnie) |
vbMonday |
2 | Poniedziałek |
vbTuesday |
3 | Wtorek |
vbWednesday |
4 | Środa |
vbThursday |
5 | Czwartek |
vbFriday |
6 | Piątek |
vbSaturday |
7 | Sobota |
| Stała | Value (Wartość) | Opis |
|---|---|---|
vbUseSystem |
0 | Używa ustawienia interfejsu API funkcji NLS. |
vbFirstJan1 |
1 | Rozpoczyna się od tygodnia, w którym występuje 1 stycznia (domyślnie). |
vbFirstFourDays |
2 | Rozpoczyna się od pierwszego tygodnia z co najmniej czterema dniami w nowym roku. |
vbFirstFullWeek |
3 | Zaczyna się od pierwszego pełnego tygodnia roku. |
Uwagi
Funkcja DateDiff służy do określania liczby określonych interwałów czasu między dwiema datami. Przy jego użyciu można DateDiff na przykład obliczyć liczbę dni między dwiema datami lub liczbę tygodni między dniem dzisiejszym a końcem roku.
Aby obliczyć liczbę dni między date1 i date2, można użyć argumentu Dzień roku ("y") lub Dzień ("d"). Gdy interval jest to dzień tygodnia ("w"), DateDiff zwraca liczbę tygodni między dwiema datami. Jeśli date1 wypada w poniedziałek, DateDiff liczy liczbę poniedziałków do date2. Liczy date2 się, ale nie date1. Jeśli interval jednak DateDiff jest to Tydzień ("ww"), funkcja zwraca liczbę tygodni kalendarzowych między dwiema datami. Zlicza liczbę niedziel między date1 a date2.
DateDiff liczy date2 , jeśli wypada w niedzielę, ale nie liczy date1się, nawet jeśli wypada w niedzielę.
Jeśli date1 funkcja odwołuje się do punktu w czasie późniejszego niż date2, DateDiff zwraca liczbę ujemną.
Argument firstdayofweek ten ma wpływ na obliczenia, w których są używane symbole interwału "w" i "ww" .
Jeśli date1 or date2 jest literalem daty, określony rok staje się stałą częścią tej daty. Jeśli date1 jednak operator lub date2 jest ujęty w cudzysłów (" "), a rok zostanie pominięty, to przy każdym obliczaniu wyrażenia date1 lub date2 w kodzie będzie wstawiany bieżący rok. Umożliwia to pisanie kodu, którego można używać w różnych latach.
Porównując datę 31 grudnia z 1 stycznia następnego roku, DateDiff dla argumentu Rok ("yyyy") zostanie zwrócona wartość 1, mimo że upłynęła zaledwie jedna doba.
Uwaga
Dla date1 i date2, jeśli Calendar ustawienie właściwości jest gregoriańskie, podana data musi być gregoriańska. Jeśli kalendarz jest kalendarzem Hidżry, podana data musi być kalendarzem Hidżra.
Przykłady zapytań DateDiff
| Wyrażenie | Rezultat |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Zwraca (w latach) różnicę między datą 01/01/2010 a wartościami DateofSale pola. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca różnicę w kwartałach na podstawie roku kalendarzowego między datą systemową a DateofSalei wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca (w dniach) różnicę między datą systemową a DateofSalei wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca (w dniach) różnicę między datą systemową a DateofSalei wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca w dniach tygodnia różnicę między datą systemową a DateofSalei wyświetla ją w kolumnie DaysSinceSale . Jeśli DateofSale wypada w poniedziałek, DateDiff zlicza poniedziałki aż do daty systemowej. Zliczana jest data systemowa, ale nie DateofSale wartość. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca (w tygodniach kalendarzowych) różnicę między datą systemową a DateofSalei wyświetla ją w kolumnie DaysSinceSale . Zlicza liczbę niedziel między DateofSale datą systemową a datą systemową. Zlicza datę systemową, jeśli wypada w niedzielę, ale nie liczy DateofSalesię, nawet jeśli wypada w niedzielę. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca (w godzinach) różnicę między datą systemową a DateTimei wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca (w minutach) różnicę między datą systemową a DateTimei wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca (w sekundach) różnicę między datą systemową a DateTimei wyświetla ją w kolumnie DaysSinceSale . |
Używanie funkcji DateDiff w wyrażeniu
Funkcji tej można używać DateDiff wszędzie tam, gdzie są używane wyrażenia. Załóżmy na przykład, że masz formularz używany do realizacji zamówień klientów. W tabeli Zamówienia znajduje się pole o nazwie ReceiveBefore zawierające datę, do której klient musi otrzymać zamówienie. Tej DateDiff funkcji można użyć w polu tekstowym formularza, aby wyświetlić liczbę dni pozostałych do wysłania zamówienia.
Jeśli wysłanie zamówienia trwa dziesięć dni, ustaw właściwość Źródło kontrolki pola tekstowego w następujący sposób:
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10
Po otwarciu formularza w widoku formularza w polu tekstowym jest wyświetlana liczba dni pozostałych do wysłania zamówienia. Jeśli do otrzymania zamówienia przez klienta pozostało mniej niż 10 dni, liczba w polu tekstowym jest ujemna. Wskazuje on, ile dni opóźnienia będzie w złożeniu zamówienia, jeśli wyślesz je natychmiast.
Używanie funkcji DateDiff w kodzie języka VBA
W tym przykładzie funkcji użyto do DateDiff wyświetlenia liczby dni między datą a dniem dzisiejszym.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg