Condividi tramite


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)