Zwraca wartość typu wariant (liczba długa) określającą liczbę interwałów czasu 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 obliczania różnicy między date1 a date2. |
date1, date2 |
Argument wymagany. Wariant (data). Dwie daty, których chcesz użyć w obliczeniach. |
firstdayofweek |
Argument opcjonalny. Stała określająca pierwszy dzień tygodnia. Jeśli go nie określisz, przyjmowana jest niedziela. |
firstweekofyear |
Argument opcjonalny. Stała określająca pierwszy tydzień roku. Jeśli go nie określisz, pierwszy tydzień to tydzień, w którym przypada 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 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 NLS. |
vbFirstJan1 |
1 | Rozpoczyna się od tygodnia, w którym występuje 1 stycznia (domyślnie). |
vbFirstFourDays |
2 | Rozpoczyna się od pierwszego tygodnia, który ma co najmniej cztery dni w nowym roku. |
vbFirstFullWeek |
3 | Rozpoczyna się od pierwszego pełnego tygodnia roku. |
Uwagi
Za pomocą DateDiff tej funkcji można określić, ile określonych interwałów czasu istnieje między dwiema datami. Można na przykład obliczyć DateDiff 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żesz użyć opcji 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 zlicza liczbę poniedziałków do date2. To się liczy date2 , ale nie date1. Jeśli interval jednak DateDiff jest to tydzień ("ww"), funkcja zwraca liczbę tygodni kalendarzowych między dwiema datami. Zlicza ona liczbę niedziel między date1 i date2.
DateDiff liczą date2 się, jeśli przypada ona w niedzielę, ale nie liczą date1się , nawet jeśli przypada ona w niedzielę.
Jeśli date1 odwołuje się do późniejszego punktu w czasie niż date2, DateDiff funkcja zwraca liczbę ujemną.
Argument ten firstdayofweek wpływa na obliczenia, w których są używane "w" symbole interwałów i "ww" symbole.
Jeśli date1 jest date2 literałem daty, określony rok staje się stałą częścią tej daty. Jeśli date1date2 jednak zostanie ujęty w podwójny cudzysłów (" ") i rok zostanie pominięty, bieżący rok zostanie wstawiony do kodu za każdym razem, gdy date1 wyrażenie zostanie date2 ocenione. Umożliwia to pisanie kodu, którego można używać w różnych latach.
W przypadku porównania od 31 grudnia do 1 stycznia następnego roku dla pozycji Rok ("yyyy") zwraca wartość 1, DateDiff mimo że minął tylko jeden dzień.
Uwaga
Dla date1 i date2, jeśli Calendar ustawieniem właściwości jest gregoriański, podana data musi być gregoriański. Jeśli kalendarz to Hidżry, podana data musi mieć wartość Hidżry.
Przykłady zapytań DateDiff
| Wyrażenie | Rezultat |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Zwraca różnicę w latach między datą 01/01/2010 a wartościami w DateofSale polu. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca różnicę w kwartałach na podstawie roku kalendarzowego między datą systemową a DateofSalewartością , a następnie wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca różnicę w dniach między datą systemową a DateofSaledatą systemu i wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca różnicę w dniach między datą systemową a DateofSaledatą systemu i wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca różnicę w dniach powszednich między datą systemową a DateofSaledatą systemu i wyświetla ją w kolumnie DaysSinceSale . Jeśli DateofSale wypada w poniedziałek, DateDiff zlicza liczbę poniedziałków do daty systemowej. Zlicza datę systemową, DateofSale ale nie wartość. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca różnicę w tygodniach kalendarzowych między datą systemową a DateofSalewartością , a następnie wyświetla ją w kolumnie DaysSinceSale . Zlicza ona liczbę niedziel między DateofSale a datą systemową. Liczy ona datę systemową, jeśli przypada w niedzielę, ale nie jest liczna DateofSale, nawet jeśli przypada w niedzielę. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca różnicę w godzinach między datą systemową a DateTimedatą systemu i wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca różnicę (w minutach) między datą systemową a DateTimewartością , a następnie wyświetla ją w kolumnie DaysSinceSale . |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Zwraca różnicę (w sekundach) między datą systemową a DateTimewartością , a następnie wyświetla ją w kolumnie DaysSinceSale . |
Używanie funkcji DateDiff w wyrażeniu
Funkcji można używać wszędzie DateDiff tam, gdzie można używać wyrażeń. 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 zawierające ReceiveBefore datę otrzymania zamówienia przez klienta. Funkcji można użyć DateDiff z polem tekstowym w formularzu, aby wyświetlić liczbę dni pozostałych przed wysłaniem zamówienia.
Zakładając, że wysłanie dowolnego 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 przed wysłaniem zamówienia. Jeśli pozostało mniej niż 10 dni, zanim klient będzie musiał otrzymać zamówienie, liczba w polu tekstowym będzie ujemna. Wskazuje liczbę dni, po których zamówienie zostanie wysłane natychmiast.
Używanie funkcji DateDiff w kodzie VBA
W tym przykładzie funkcja jest używana DateDiff do wyświetlania liczby dni między daną 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