DATEDIFF (espressione 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)