Funzione DATEDIFF - AWS Clean Rooms

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzione DATEDIFF

DATEDIFFrestituisce la differenza tra le parti relative alla data di due espressioni di data o ora.

Sintassi

DATEDIFF ( datepart, {date|time|timetz|timestamp}, {date|time|timetz|timestamp} )

Argomenti

datepart

La parte specifica del valore di data o ora (anno, mese o giorno, ora, minuto, secondo, millisecondo o microsecondo) su cui la funzione opera. Per ulteriori informazioni, consulta Parti di data per funzioni di data e timestamp.

In particolare, DATEDIFF determina il numero di limiti delle parti di data che vengono superati tra due espressioni. Ad esempio, si supponga di calcolare la differenza in anni tra due date, 12-31-2008 e 01-01-2009. In questo caso, la funzione restituisce 1 anno nonostante il fatto che queste date siano separate solo da un giorno. Se cerchi la differenza in ore tra due timestamp, 01-01-2009 8:30:00 e 01-01-2009 10:00:00, il risultato è 2 ore. Se cerchi la differenza in ore tra due timestamp, 8:30:00 e 10:00:00, il risultato è 2 ore.

date|time|timetz|timestamp

UnaDATE,, TIMETIMETZ, o una TIMESTAMP o più espressioni che vengono convertite implicitamente in unDATE, TIMETIMETZ, o. TIMESTAMP Le espressioni devono entrambe contenere la parte di data o di ora specificata. Se la seconda data o ora è posteriore alla prima, il risultato è positivo. Se la seconda data o ora è anteriore alla prima, il risultato è negativo.

Tipo restituito

BIGINT

Esempi con una colonna DATE

Nell'esempio seguente viene rilevata la differenza in numero di settimane tra due valori di data letterali.

select datediff(week,'2009-01-01','2009-12-31') as numweeks; numweeks ---------- 52 (1 row)

Nell'esempio seguente viene rilevata la differenza in ore tra due valori di data letterali. Quando non si fornisce il valore dell'ora per una data, il valore predefinito è 00:00:00.

select datediff(hour, '2023-01-01', '2023-01-03 05:04:03'); date_diff ---------- 53 (1 row)

L'esempio seguente trova la differenza, in giorni, tra due TIMESTAMETZ valori letterali.

Select datediff(days, 'Jun 1,2008 09:59:59 EST', 'Jul 4,2008 09:59:59 EST') date_diff ---------- 33

Nell'esempio seguente viene rilevata la differenza, in giorni, tra due date nella stessa riga di una tabella.

select * from date_table; start_date | end_date -----------+----------- 2009-01-01 | 2009-03-23 2023-01-04 | 2024-05-04 (2 rows) select datediff(day, start_date, end_date) as duration from date_table; duration --------- 81 486 (2 rows)

Nel seguente esempio viene trovata la differenza, in numero di trimestri, tra un valore letterale nel passato e la data odierna. Questo esempio presuppone che la data corrente è il 5 giugno 2008. È possibile assegnare un nome completo o abbreviato alle parti di data. Il nome di colonna predefinito per la DATEDIFF funzione è DATE _DIFF.

select datediff(qtr, '1998-07-01', current_date); date_diff ----------- 40 (1 row)

L'esempio seguente unisce le LISTING tabelle SALES and per calcolare quanti giorni dopo la loro pubblicazione sono stati venduti i biglietti per le inserzioni dalla 1000 alla 1005. L'attesa più lunga per la vendita di questi elenchi è di 15 giorni e quella più breve è inferiore a 1 giorno (0 giorni).

select priceperticket, datediff(day, listtime, saletime) as wait from sales, listing where sales.listid = listing.listid and sales.listid between 1000 and 1005 order by wait desc, priceperticket desc; priceperticket | wait ---------------+------ 96.00 | 15 123.00 | 11 131.00 | 9 123.00 | 6 129.00 | 4 96.00 | 4 96.00 | 0 (7 rows)

Questo esempio calcola il numero medio di ore di attesa dei venditori per tutte le vendite di biglietti.

select avg(datediff(hours, listtime, saletime)) as avgwait from sales, listing where sales.listid = listing.listid; avgwait --------- 465 (1 row)

Esempi con una colonna TIME

La seguente tabella di esempio TIME _ TEST ha una colonna TIME _ VAL (tipoTIME) con tre valori inseriti.

select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00

L'esempio seguente trova la differenza di numero di ore tra la VAL colonna TIME _ e un valore temporale letterale.

select datediff(hour, time_val, time '15:24:45') from time_test; date_diff ----------- -5 15 15

Nell'esempio seguente viene rilevata la differenza in numero di minuti tra due valori letterali temporali.

select datediff(minute, time '20:00:00', time '21:00:00') as nummins; nummins ---------- 60

Esempi con una colonna TIMETZ

La seguente tabella di esempio TIMETZ _ TEST ha una colonna TIMETZ _ VAL (tipoTIMETZ) con tre valori inseriti.

select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00

L'esempio seguente trova le differenze nel numero di ore, tra un TIMETZ valore letterale e timetz_val.

select datediff(hours, timetz '20:00:00 PST', timetz_val) as numhours from timetz_test; numhours ---------- 0 -4 1

L'esempio seguente trova la differenza in numero di ore tra due valori letterali. TIMETZ

select datediff(hours, timetz '20:00:00 PST', timetz '00:58:00 EST') as numhours; numhours ---------- 1