Condividi tramite


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)