View a markdown version of this page

Tipi di dati e valori letterali relativi agli intervalli - 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à.

Tipi di dati e valori letterali relativi agli intervalli

Puoi utilizzare un tipo di dati di intervallo per memorizzare le durate di tempo in unità quali seconds, minutes, hours, days, months e years. I tipi di dati e i valori letterali relativi agli intervalli possono essere utilizzati nei calcoli data/ora, ad esempio aggiungendo intervalli a date e timestamp, sommando gli intervalli e sottraendo un intervallo da una data o un timestamp. I valori letterali relativi agli intervalli possono essere utilizzati come valori per intervallare le colonne dei tipi di dati in una tabella.

Sintassi del tipo di dati di intervallo

Come specificare un tipo di dati di intervallo per memorizzare una durata di tempo in anni e mesi:

INTERVAL year_to_month_qualifier

Come specificare un tipo di dati di intervallo per memorizzare una durata in giorni, ore, minuti e secondi:

INTERVAL day_to_second_qualifier [ (fractional_precision) ]

Sintassi dell’intervallo letterale

Come specificare un intervallo letterale per definire una durata di tempo in anni e mesi:

INTERVAL quoted-string year_to_month_qualifier

Come specificare un intervallo letterale per definire una durata in giorni, ore, minuti e secondi:

INTERVAL quoted-string day_to_second_qualifier [ (fractional_precision) ]

Arguments (Argomenti)

quoted-string

Specifica un valore numerico positivo o negativo che indica una quantità e l’unità data/ora come stringa di input. Se la stringa tra virgolette contiene solo un numero, AWS Clean Rooms determina le unità da year_to_month_qualifier o day_to_second_qualifier. Ad esempio, '23' MONTH rappresenta 1 year 11 months, '-2' DAY rappresenta -2 days 0 hours 0 minutes 0.0 seconds, '1-2' MONTH rappresenta 1 year 2 months e '13 day 1 hour 1 minute 1.123 seconds' SECOND rappresenta 13 days 1 hour 1 minute 1.123 seconds. Per ulteriori informazioni sui formati di output di un intervallo, consulta Stili di intervallo.

year_to_month_qualifier

Specifica l’intervallo di valori. Se utilizzate un qualificatore e create un intervallo con unità di tempo più piccole del qualificatore, tronca e scarta le parti più piccole dell'intervallo. AWS Clean Rooms I valori validi per year_to_month_qualifier sono:

  • YEAR

  • MONTH

  • YEAR TO MONTH

day_to_second_qualifier

Specifica l’intervallo di valori. Se utilizzate un qualificatore e create un intervallo con unità di tempo più piccole del qualificatore, tronca e scarta le parti più piccole dell'intervallo. AWS Clean Rooms I valori validi per day_to_second_qualifier sono:

  • DAY

  • HOUR

  • MINUTE

  • SECOND

  • DAY TO HOUR

  • DAY TO MINUTE

  • DAY TO SECOND

  • HOUR TO MINUTE

  • HOUR TO SECOND

  • MINUTE TO SECOND

L’output del valore letterale INTERVAL viene troncato in base al componente INTERVAL più piccolo specificato. Ad esempio, quando si utilizza un qualificatore MINUTE, scarta le unità di tempo più piccole di MINUTE. AWS Clean Rooms

select INTERVAL '1 day 1 hour 1 minute 1.123 seconds' MINUTE

Il valore risultante viene troncato in '1 day 01:01:00'.

fractional_precision

Parametro facoltativo che specifica il numero di cifre frazionarie consentite nell’intervallo. L’argomento fractional_precision deve essere specificato solo se l’intervallo contiene SECOND. Ad esempio, SECOND(3) crea un intervallo che prevede solo tre cifre frazionarie, ad esempio 1,234 secondi. Il numero massimo di cifre frazionarie è sei.

La configurazione della sessione interval_forbid_composite_literals determina se viene restituito un errore quando viene specificato un intervallo con le parti YEAR TO MONTH e DAY TO SECOND.

Aritmetica dell’intervallo

Puoi utilizzare i valori di intervallo con altri valori di data e ora per eseguire operazioni aritmetiche. Le tabelle seguenti descrivono le operazioni disponibili e il tipo di dati risultante da ciascuna operazione.

Nota

Le operazioni che possono produrre entrambi i risultati date e timestamp lo fanno in base alla più piccola unità di tempo coinvolta nell’equazione. Ad esempio, quando aggiungi un valore interval a un valore date, il risultato è un valore date, se si tratta di un intervallo YEAR TO MONTH e un timestamp se si tratta di un intervallo DAY TO SECOND.

Le operazioni in cui il primo operando è un valore interval producono i seguenti risultati per il secondo operando specificato:

Operatore Data Time stamp Interval Numerico
- N/D N/D Interval N/D
+ Data Data/Timestamp Interval N/D
* N/D N/D N/D Interval
/ N/D N/D N/D Interval

Le operazioni in cui il primo operando è un date producono i seguenti risultati per il secondo operando specificato:

Operatore Data Time stamp Interval Numerico
- Numerico Interval Data/Timestamp Data
+ N/D N/D N/D N/D

Le operazioni in cui il primo operando è un timestamp producono i seguenti risultati per il secondo operando specificato:

Operatore Data Time stamp Interval Numerico
- Numerico Interval Time stamp Time stamp
+ N/D N/D N/D N/D

Stili di intervallo

  • postgres: segue lo stile PostgreSQL. Questa è l’impostazione predefinita.

  • postgres_verbose: segue lo stile verboso PostgreSQL.

  • sql_standard: segue lo stile dei valori letterali dell’intervallo standard SQL.

Il comando seguente imposta lo stile dell’intervallo su sql_standard.

SET IntervalStyle to 'sql_standard';

formato di output postgres

Di seguito è riportato il formato di output per lo stile di intervallo postgres. Ogni valore numerico può essere negativo.

'<numeric> <unit> [, <numeric> <unit> ...]'
select INTERVAL '1-2' YEAR TO MONTH::text varchar --------------- 1 year 2 mons
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::text varchar ------------------ 1 day 02:03:04.5678

formato di output postgres_verbose

La sintassi di postgres_verbose è simile a quella di postgres, ma gli output di postgres_verbose contengono anche l’unità di tempo.

'[@] <numeric> <unit> [, <numeric> <unit> ...] [direction]'
select INTERVAL '1-2' YEAR TO MONTH::text varchar ----------------- @ 1 year 2 mons
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::text varchar --------------------------- @ 1 day 2 hours 3 mins 4.56 secs

formato di output sql_standard

I valori dell’intervallo da anno a mese sono formattati come segue. Se si specifica un segno negativo prima dell’intervallo, si indica che l’intervallo è un valore negativo e si applica all’intero intervallo.

'[-]yy-mm'

I valori dell’intervallo da giorno a secondo sono formattati come segue.

'[-]dd hh:mm:ss.ffffff'
SELECT INTERVAL '1-2' YEAR TO MONTH::text varchar ------- 1-2
select INTERVAL '1 2:3:4.5678' DAY TO SECOND::text varchar --------------- 1 2:03:04.5678

Esempi di tipi di dati relativi agli intervalli

Negli esempi seguenti viene illustrato come utilizzare i tipi di dati INTERVAL con le tabelle.

create table sample_intervals (y2m interval month, h2m interval hour to minute); insert into sample_intervals values (interval '20' month, interval '2 days 1:1:1.123456' day to second); select y2m::text, h2m::text from sample_intervals; y2m | h2m ---------------+----------------- 1 year 8 mons | 2 days 01:01:00
update sample_intervals set y2m = interval '2' year where y2m = interval '1-8' year to month; select * from sample_intervals; y2m | h2m ---------+----------------- 2 years | 2 days 01:01:00
delete from sample_intervals where h2m = interval '2 1:1:0' day to second; select * from sample_intervals; y2m | h2m -----+-----

Esempi di valori letterali relativi agli intervalli

Gli esempi seguenti vengono eseguiti con lo stile di intervallo impostato su postgres.

L’esempio seguente mostra come creare un valore letterale di INTERVAL di 1 anno.

select INTERVAL '1' YEAR intervaly2m --------------- 1 years 0 mons

Se si specifica un argomento quoted-string che supera il qualificatore, le unità di tempo rimanenti vengono troncate dall’intervallo. Nell’esempio seguente, un intervallo di 13 mesi diventa 1 anno e 1 mese, ma il mese restante viene escluso a causa del qualificatore YEAR.

select INTERVAL '13 months' YEAR intervaly2m --------------- 1 years 0 mons

Se utilizzi un qualificatore inferiore alla stringa di intervallo, vengono incluse le unità rimanenti.

select INTERVAL '13 months' MONTH intervaly2m --------------- 1 years 1 mons

Se si specifica una precisione nell’intervallo, il numero di cifre frazionarie viene troncato in base alla precisione specificata.

select INTERVAL '1.234567' SECOND (3) intervald2s -------------------------------- 0 days 0 hours 0 mins 1.235 secs

Se non si specifica una precisione, AWS Clean Rooms utilizza la precisione massima di 6.

select INTERVAL '1.23456789' SECOND intervald2s ----------------------------------- 0 days 0 hours 0 mins 1.234567 secs

L’esempio seguente dimostra come creare un intervallo di valori.

select INTERVAL '2:2' MINUTE TO SECOND intervald2s ------------------------------ 0 days 0 hours 2 mins 2.0 secs

I qualificatori determinano le unità che specificate. Ad esempio, anche se l'esempio seguente utilizza la stessa stringa tra virgolette '2:2' dell'esempio precedente, AWS Clean Rooms riconosce che utilizza unità di tempo diverse a causa del qualificatore.

select INTERVAL '2:2' HOUR TO MINUTE intervald2s ------------------------------ 0 days 2 hours 2 mins 0.0 secs

Sono supportati anche le abbreviazioni e i plurali di ciascuna unità. Ad esempio, 5s, 5 second e 5 seconds sono intervalli equivalenti. Le unità supportate sono anni, mesi, ore, minuti e secondi.

select INTERVAL '5s' SECOND intervald2s ------------------------------ 0 days 0 hours 0 mins 5.0 secs
select INTERVAL '5 HOURS' HOUR intervald2s ------------------------------ 0 days 5 hours 0 mins 0.0 secs
select INTERVAL '5 h' HOUR intervald2s ------------------------------ 0 days 5 hours 0 mins 0.0 secs