Tipi di dati e valori letterali a intervalli - Amazon Redshift

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 a intervalli

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

Sintassi del tipo di dati a intervalli

Per specificare un tipo di dati a intervalli per memorizzare una durata di tempo in anni e mesi:

INTERVAL year_to_month_qualifier

Per specificare un tipo di dati a intervalli per memorizzare una durata in giorni, ore, minuti e secondi:

INTERVAL day_to_second_qualifier [ (fractional_precision) ]

Sintassi dell'intervallo letterale

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

INTERVAL quoted-string year_to_month_qualifier

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

INTERVAL quoted-string day_to_second_qualifier [ (fractional_precision) ]

Argomenti

stringa tra virgolette

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

qualificazione anno_per_mese

Speciifica l'intervallo dell'intervallo. Se usi un qualificatore e crei un intervallo con unità di tempo più piccole del qualificatore, Amazon Redshift tronca e scarta le parti più piccole dell'intervallo. I valori validi per year_to_month_qualifier sono:

  • YEAR

  • MONTH

  • YEAR TO MONTH

day_to_second_qualifier

Speciifica l'intervallo dell'intervallo. Se usi un qualificatore e crei un intervallo con unità di tempo più piccole del qualificatore, Amazon Redshift tronca e scarta le parti più piccole dell'intervallo. 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 al componente INTERVAL più piccolo specificato. Ad esempio, quando si utilizza un qualificatore MINUTE, Amazon Redshift elimina le unità di tempo inferiori a MINUTE.

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

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

precisione_frazionale

Parametro opzionale 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 consente 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 DA ANNO A MESE e DA GIORNO A SECONDO. Per ulteriori informazioni, consulta interval_forbid_composite_literals.

Aritmetica degli intervalli

È possibile utilizzare valori di intervallo con altri valori di data e ora per eseguire operazioni aritmetiche. La tabella seguente descrive le operazioni disponibili e il tipo di dati risultante da ciascuna operazione. Ad esempio, quando si aggiunge un interval a, date il risultato è un date se si tratta di un intervallo DA ANNO A MESE e un timestamp se si tratta di un intervallo DA UN GIORNO A UN SECONDO.

Data Timestamp Interval Numerico
Interval (Intervallo) - N/D N/D Interval N/D
+ Data Data/ora Interval N/D
* N/D N/D N/D Interval
/ N/D N/D N/D Interval
Data - Numerico Interval Data/ora Data
+ N/D N/D N/D N/D
Time stamp - Interval Interval Timestamp Timestamp
+ N/D N/D N/D N/D

Stili di intervallo

È possibile utilizzare il SET comando SQL per modificare il formato di visualizzazione dell'output dei valori degli intervalli. Quando utilizzi il tipo di dati dell'intervallo in SQL, trasmettilo in testo per visualizzare lo stile di intervallo previsto, ad esempio. YEAR TO MONTH::text I valori disponibili per IMPOSTARE il IntervalStyle valore sono:

  • postgres— segue lo stile PostgreSQL. Questa è l'impostazione predefinita.

  • postgres_verbose— segue lo stile verboso di PostgreSQL.

  • sql_standard— segue lo stile letterale a intervalli 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 degli postgres intervalli. 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 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 a intervalli

Gli esempi seguenti mostrano 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 a intervalli

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

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

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

Se si specifica una stringa tra virgolette 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 restante 1 mese viene escluso a causa del qualificatore YEAR.

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

Se si utilizza 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 alla precisione specificata.

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

Se non specifichi una precisione, Amazon Redshift utilizza la precisione massima di 6.

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

L'esempio seguente mostra come creare un intervallo con intervalli.

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

I qualificatori determinano le unità che state specificando. Ad esempio, anche se l'esempio seguente utilizza la stessa stringa tra virgolette '2:2' dell'esempio precedente, Amazon Redshift 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 supportate anche le abbreviazioni e i plurali di ciascuna unità. Ad esempio, 5s5 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