DATEDIFF (SSIS)
Restituisce il numero di unità di data e ora trascorse tra due date specificate. Il parametro datepart identifica i limiti di data e ora da confrontare.
Sintassi
DATEDIFF(datepart, startdate, endate)
Argomenti
datepart
Parametro che specifica per quale parte della data si desidera eseguire il confronto e restituire un valore.startdate
Data di inizio dell'intervallo.endate
Data di fine dell'intervallo.
Tipi restituiti
DT_I4
Osservazioni
Nella tabella seguente sono elencate le parti della data e le abbreviazioni riconosciute dall'analizzatore di espressioni.
Parte della data |
Abbreviazioni |
---|---|
Year |
yy, yyyy |
Quarter |
qq, q |
Month |
mm, m |
Dayofyear |
dy, y |
Day |
dd, d |
Week |
wk, ww |
Weekday |
dw, w |
Hour |
Hh |
Minute |
mi, n |
Second |
ss, s |
Millisecond |
Ms |
Se un argomento qualsiasi è Null, DATEDIFF restituirà Null.
Per i valori letterali di data è necessario eseguire il cast esplicito a uno dei tipi di dati date. Per ulteriori informazioni, vedere Tipi di dati di Integration Services.
[!NOTA]
La convalida dell'espressione non riesce quando viene eseguito il cast esplicito di un valore letterale di data a uno di questi tipi di dati relativi alle date: DT_DBTIMESTAMPOFFSET, DT_DBTIMESTAMP2 e DT_DBTIME2.
Se la data non è valida, l'ora o la data non è una stringa oppure la data di inizio o fine non è una data, verrà generato un errore.
Se la data di fine è anteriore a quella di inizio, la funzione restituirà un numero negativo. Se le date di inizio e di fine coincidono o rientrano nello stesso intervallo, la funzione restituirà zero.
Esempi
In questo esempio viene calcolato il numero dei giorni tra due valori letterali di data. Se la data è in formato "mm/gg/aaaa", la funzione restituirà 7.
DATEDIFF("dd", (DT_DBTIMESTAMP)"8/1/2003", (DT_DBTIMESTAMP)"8/8/2003")
In questo esempio viene restituito il numero dei mesi tra un valore letterale data e la data corrente.
DATEDIFF("mm", (DT_DBTIMESTAMP)"8/1/2003",GETDATE())
In questo esempio viene restituito il numero delle settimane tra la data nella colonna ModifiedDate e quella nella variabile YearEndDate. Se YearEndDate ha tipo di dati date, non sarà necessario eseguire un cast esplicito.
DATEDIFF("Week", ModifiedDate,@YearEndDate)
Vedere anche