Restituisce un valore Variant (Long) che specifica il numero di intervalli di tempo tra due date.
Sintassi
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
La DateDiff funzione ha gli argomenti seguenti:
| Argomento | Descrizione |
|---|---|
interval |
Obbligatorio. Espressione stringa che rappresenta l'intervallo di tempo usato per calcolare la differenza tra date1 e date2. |
date1, date2 |
Obbligatori. Variant (Date). Due date da usare nel calcolo. |
firstdayofweek |
Facoltativo. Costante che specifica il primo giorno della settimana. Se non lo si specifica, verrà considerato uguale a domenica. |
firstweekofyear |
Facoltativo. Una costante che specifica la prima settimana dell'anno. Se non lo si specifica, la prima settimana corrisponde alla settimana in cui si verifica l'1 gennaio. |
Impostazioni
L'argomento interval ha queste impostazioni:
| Impostazione | Descrizione |
|---|---|
yyyy |
Anno |
q |
Trimestre |
m |
Mese |
y |
Giorno dell'anno |
d |
Giorno |
w |
Weekday |
ww |
Settimana |
h |
Ora |
n |
Minuto |
s |
Secondo |
L'argomento firstdayofweek ha queste impostazioni:
| Costante | Valore | Descrizione |
|---|---|---|
vbUseSystem |
0 | Usa l'impostazione dell'API NLS. |
vbSunday |
1 | Domenica (impostazione predefinita) |
vbMonday |
2 | Lunedì |
vbTuesday |
3 | Martedì |
vbWednesday |
4 | Mercoledì |
vbThursday |
5 | Giovedì |
vbFriday |
6 | Venerdì |
vbSaturday |
7 | Sabato |
| Costante | Valore | Descrizione |
|---|---|---|
vbUseSystem |
0 | Usa l'impostazione dell'API NLS. |
vbFirstJan1 |
1 | Inizia con la settimana in cui si verifica l'1 gennaio (impostazione predefinita). |
vbFirstFourDays |
2 | Inizia con la prima settimana che ha almeno quattro giorni nel nuovo anno. |
vbFirstFullWeek |
3 | Inizia con la prima settimana completa dell'anno. |
Osservazioni
È possibile usare la DateDiff funzione per determinare il numero di intervalli di tempo specificati tra due date. Ad esempio, è possibile calcolare DateDiff il numero di giorni tra due date o il numero di settimane tra la data odierna e la fine dell'anno.
Per calcolare il numero di giorni compresi tra date1 e date2, è possibile usare Giorno dell'anno ("y") o Giorno ("d"). Quando interval è Giorno feriale ("w"), DateDiff restituisce il numero di settimane tra le due date. Se date1 cade il lunedì, DateDiff conta il numero di lunedì fino a date2.
date2 Conta, ma non date1. Se interval è impostato su Settimana ("ww"), tuttavia, la DateDiff funzione restituisce il numero di settimane di calendario comprese tra le due date. Conta il numero di domeniche tra date1 e date2.
DateDiff conta date2 se cade di domenica, ma non conta date1, anche se cade di domenica.
Se date1 si riferisce a un momento successivo rispetto date2a , la DateDiff funzione restituirà un numero negativo.
L'argomento firstdayofweek influisce sui calcoli che usano i "w" simboli di intervallo e "ww" .
Se date1 o date2 è un valore letterale di data, l'anno specificato diventa una parte permanente di tale data. Tuttavia, se date1 o date2 è racchiuso tra virgolette doppie (" ") e si omette l'anno, l'anno corrente viene inserito nel codice ogni volta che l'espressione date1 o date2 viene valutata. In questo modo è possibile scrivere codice utilizzabile in anni diversi.
Se si confronta il 31 dicembre con l'1 gennaio dell'anno successivo, DateDiff per Anno ("yyyy") viene restituito 1 anche se è trascorso un solo giorno.
Nota
Per date1 e date2, se la Calendar proprietà è impostata su Gregoriano, la data fornita deve essere gregoriana. Se il calendario è Hijri, la data specificata deve essere basata sul calendario Hijri.
Esempi di query DateDiff
| Espressione | Risultati |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Restituisce la differenza, in anni, tra la data 01/01/2010 e i valori nel DateofSale campo. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Restituisce la differenza, nei trimestri in base all'anno di calendario, tra la data del sistema e DateofSalee la visualizza nella DaysSinceSale colonna. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Restituisce la differenza, in giorni, tra la data del sistema e DateofSalee la visualizza nella DaysSinceSale colonna. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Restituisce la differenza, in giorni, tra la data del sistema e DateofSalee la visualizza nella DaysSinceSale colonna. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Restituisce la differenza, nei giorni feriali, tra la data del sistema e DateofSalee la visualizza nella DaysSinceSale colonna. Se DateofSale corrisponde a un lunedì, DateDiff conta il numero di lunedì fino alla data del sistema. Conta la data di sistema, ma non il DateofSale valore. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Restituisce la differenza, nelle settimane del calendario, tra la data del sistema e DateofSalee la visualizza nella DaysSinceSale colonna. Conta il numero di domeniche tra DateofSale e la data del sistema. Conta la data del sistema se cade di domenica, ma non conta DateofSale, anche se cade di domenica. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Restituisce la differenza, in ore, tra la data del sistema e DateTimee la visualizza nella DaysSinceSale colonna. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Restituisce la differenza, in minuti, tra la data del sistema e DateTimee la visualizza nella DaysSinceSale colonna. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Restituisce la differenza, in secondi, tra la data del sistema e DateTimee la visualizza nella DaysSinceSale colonna. |
Usare la funzione DateDiff in un'espressione
È possibile usare la DateDiff funzione ovunque sia possibile usare le espressioni. Si supponga, ad esempio, di usare una maschera per completare gli ordini dei clienti. Nella tabella Ordini è presente un campo denominato ReceiveBefore che contiene la data entro la quale il cliente deve ricevere l'ordine. È possibile usare la DateDiff funzione con una casella di testo nella maschera per visualizzare il numero di giorni rimanenti prima che l'ordine debba essere spedito.
Supponendo che siano necessari dieci giorni per spedire qualsiasi ordine, impostare la proprietà Origine controllo della casella di testo nel modo seguente:
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10
Quando si apre la maschera in visualizzazione Maschera, la casella di testo visualizza il numero di giorni rimanenti prima che l'ordine debba essere spedito. Se restano meno di 10 giorni prima che il cliente debba ricevere l'ordine, il numero nella casella di testo è negativo. Indica il numero di giorni di ritardo dell'ordine se lo spedirete immediatamente.
Usare la funzione DateDiff nel codice VBA
Questo esempio usa la DateDiff funzione per visualizzare il numero di giorni tra una data specificata e la data odierna.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg