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,,,, seconds
minutes
, 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' MONTH
1 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, 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