

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 datetime
<a name="Datetime_types"></a>

I tipi di dati Datetime includono DATE, TIME, TIMESTAMP\$1LTZ e TIMESTAMP\$1NTZ.

**Topics**
+ [DATE](Datetime_types-date.md)
+ [TIMESTAMP\$1LTZ](Datetime_types-timestamp_LTZ.md)
+ [TIMESTAMP\$1NTZ](Datetime_types-TIMESTAMP_NTZ.md)
+ [Esempi con tipi datetime](Examples_with_datetime_types.md)
+ [Valori letterali di data, ora e timestamp](Date_and_time_literals.md)
+ [Valori letterali di intervallo](Interval_literals.md)
+ [Tipi di dati e valori letterali relativi agli intervalli](interval_data_types_spark.md)

# DATE
<a name="Datetime_types-date"></a>

Utilizzare il tipo di dati DATE per memorizzare semplici date di calendario senza timestamp.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/clean-rooms/latest/sql-reference/Datetime_types-date.html)

# TIMESTAMP\$1LTZ
<a name="Datetime_types-timestamp_LTZ"></a>

Usa il tipo di dati TIMESTAMP\$1LTZ per memorizzare valori di timestamp completi che includono la data, l'ora del giorno e il fuso orario locale. 

TIMESTAMP rappresenta i valori che comprendono i valori dei campi`year`,,,, e`month`, `day` con il fuso orario locale della sessione. `hour` `minute` `second` Il `timestamp` valore rappresenta un punto temporale assoluto.

TIMESTAMP in Spark è un alias specificato dall'utente associato a una delle varianti TIMESTAMP\$1LTZ e TIMESTAMP\$1NTZ. Puoi impostare il tipo di timestamp predefinito come TIMESTAMP\$1LTZ (valore predefinito) o TIMESTAMP\$1NTZ tramite la configurazione. `spark.sql.timestampType`

# TIMESTAMP\$1NTZ
<a name="Datetime_types-TIMESTAMP_NTZ"></a>

Usa il tipo di dati TIMESTAMP\$1NTZ per memorizzare valori di timestamp completi che includono la data e l'ora del giorno, senza il fuso orario locale. 

TIMESTAMP rappresenta i valori che comprendono i valori dei campi,,,, e. `year` `month` `day` `hour` `minute` `second` Tutte le operazioni vengono eseguite senza tenere conto del fuso orario.

TIMESTAMP in Spark è un alias specificato dall'utente associato a una delle varianti TIMESTAMP\$1LTZ e TIMESTAMP\$1NTZ. Puoi impostare il tipo di timestamp predefinito come TIMESTAMP\$1LTZ (valore predefinito) o TIMESTAMP\$1NTZ tramite la configurazione. `spark.sql.timestampType`

# Esempi con tipi datetime
<a name="Examples_with_datetime_types"></a>

Gli esempi seguenti mostrano come lavorare con i tipi di datetime supportati da. AWS Clean Rooms

## Esempi di data
<a name="Examples_with_datetime_types-date-examples"></a>

Nei seguenti esempi vengono inserite date con formati diversi e viene visualizzato il risultato. 

```
select * from datetable order by 1;

start_date |  end_date
-----------------------
2008-06-01 | 2008-12-31
2008-06-01 | 2008-12-31
```

Se si inserisce un valore timestamp in una colonna DATE, la parte dell'ora viene ignorata e viene caricata solo la data.

## Esempi di orari
<a name="Examples_with_datetime_types-time-examples"></a>

Negli esempi seguenti vengono inseriti valori TIME e TIMETZ con formati diversi e viene visualizzato il risultato.

```
select * from timetable order by 1;
start_time |  end_time
------------------------
 19:11:19  | 20:41:19+00
 19:11:19  | 20:41:19+00
```

# Valori letterali di data, ora e timestamp
<a name="Date_and_time_literals"></a>

Di seguito sono riportate le regole per lavorare con i valori letterali di data, ora e timestamp supportati da Spark SQL. AWS Clean Rooms 

## Date:
<a name="Date_and_time_literals-dates"></a>

La tabella seguente mostra le date di input che sono esempi validi di valori di data letterali che è possibile caricare nelle tabelle. AWS Clean Rooms Si assume che la modalità `MDY DateStyle` di default sia in vigore. Questa modalità indica che il valore del mese precede il valore del giorno in stringhe come `1999-01-08` e `01/02/00`. 

**Nota**  
È necessario che un valore letterale data o timestamp quando viene caricato in una tabella sia racchiuso tra virgolette.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/clean-rooms/latest/sql-reference/Date_and_time_literals.html)

## Volte
<a name="Date_and_time_literals-times"></a>

La tabella seguente mostra gli orari di input che sono esempi validi di valori temporali letterali che è possibile caricare nelle AWS Clean Rooms tabelle. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/clean-rooms/latest/sql-reference/Date_and_time_literals.html)

## Valori datetime speciali
<a name="Date_and_time_literals-special-datetime-values"></a>

La tabella seguente mostra valori speciali che possono essere usati come valori letterali di data/ora e come argomenti per le funzioni di data. Richiedono virgolette singole e vengono convertiti in valori timestamp regolari durante l'elaborazione delle query. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/clean-rooms/latest/sql-reference/Date_and_time_literals.html)

Gli esempi seguenti mostrano come `now` e come utilizzare la funzione `today` DATE\$1ADD.

```
select date_add('today', 1);

date_add
---------------------
2009-11-17 00:00:00
(1 row)

select date_add('now', 1);

date_add
----------------------------
2009-11-17 10:45:32.021394
(1 row)
```

# Valori letterali di intervallo
<a name="Interval_literals"></a>

Di seguito sono riportate le regole per lavorare con i valori letterali a intervalli supportati da Spark SQL. AWS Clean Rooms 

Usa un valore letterale di intervallo per identificare periodi di tempo specifici, come `12 hours` o `6 weeks`. È possibile usare questi valori letterali di intervallo in condizioni e calcoli che comprendono espressioni datetime. 

**Nota**  
Non è possibile utilizzare il tipo di dati INTERVAL per le colonne nelle tabelle. AWS Clean Rooms 

 Un intervallo viene espresso come una combinazione della parola chiave INTERVAL con una quantità numerica e una parte di data supportata, ad esempio `INTERVAL '7 days'` o `INTERVAL '59 minutes'`. È possibile collegare diverse quantità e unità per formare un intervallo più preciso; ad esempio `INTERVAL '7 days, 3 hours, 59 minutes'`. Anche abbreviazioni e plurali di ciascuna unità sono supportati; ad esempio: `5 s`, `5 second` e `5 seconds` sono intervalli equivalenti.

Se non si specifica una parte data, il valore di intervallo rappresenterà i secondi. È possibile specificare il valore di quantità come una frazione (ad esempio: `0.5 days`).

## Esempi
<a name="section_interval-literals-examples"></a>

Gli esempi seguenti mostrano una serie di calcoli con valori di intervallo diversi.

L'esempio seguente aggiunge 1 secondo alla data specificata.

```
select caldate + interval '1 second' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:00:01
(1 row)
```

L'esempio seguente aggiunge 1 minuto alla data specificata.

```
select caldate + interval '1 minute' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:01:00
(1 row)
```

L'esempio seguente aggiunge 3 ore e 35 minuti alla data specificata.

```
select caldate + interval '3 hours, 35 minutes' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 03:35:00
(1 row)
```

L'esempio seguente aggiunge 52 settimane alla data specificata.

```
select caldate + interval '52 weeks' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-12-30 00:00:00
(1 row)
```

L'esempio seguente aggiunge 1 settimana, 1 ora, 1 minuto e 1 secondo alla data specificata.

```
select caldate + interval '1w, 1h, 1m, 1s' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-01-07 01:01:01
(1 row)
```

L'esempio seguente aggiunge 12 ore (mezza giornata) alla data specificata.

```
select caldate + interval '0.5 days' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 12:00:00
(1 row)
```

L'esempio seguente sottrae 4 mesi dal 31 marzo 2023 e il risultato è il 30 novembre 2022. Il calcolo considera il numero di giorni in un mese.

```
select date '2023-03-31' - interval '4 months';

?column?
---------------------
2022-11-30 00:00:00
```



# Tipi di dati e valori letterali relativi agli intervalli
<a name="interval_data_types_spark"></a>

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
<a name="interval_data_types-syntax"></a>

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
<a name="interval_data_types-syntax-literal"></a>

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)
<a name="interval_data_types-arguments"></a>

 *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\$1to\$1month\$1qualifier o day\$1to\$1second\$1qualifier.** 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](#interval_data_types-interval-styles).

 *year\$1to\$1month\$1qualifier*   
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\$1to\$1month\$1qualifier* sono:  
+ `YEAR`
+ `MONTH`
+ `YEAR TO MONTH`

 *day\$1to\$1second\$1qualifier*   
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\$1to\$1second\$1qualifier* 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\$1precision*   
Parametro facoltativo che specifica il numero di cifre frazionarie consentite nell’intervallo. L’argomento *fractional\$1precision* 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
<a name="interval_data_types-arithmetic"></a>

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:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/clean-rooms/latest/sql-reference/interval_data_types_spark.html)

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/clean-rooms/latest/sql-reference/interval_data_types_spark.html)

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/clean-rooms/latest/sql-reference/interval_data_types_spark.html)

## Stili di intervallo
<a name="interval_data_types-interval-styles"></a>
+ `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\$1verbose**

La sintassi di postgres\$1verbose è simile a quella di postgres, ma gli output di postgres\$1verbose 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\$1standard**

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
<a name="interval_data_types-examples"></a>

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
<a name="interval_data_types_literals-examples"></a>

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
```

# Esempi di valori letterali relativi agli intervalli senza sintassi dei qualificatori
<a name="interval_literals_examples"></a>

**Nota**  
Negli esempi seguenti viene illustrato l’utilizzo di un valore letterale relativo agli intervalli senza un qualificatore `YEAR TO MONTH` o `DAY TO SECOND`. Per informazioni sull’utilizzo del valore letterale relativo agli intervalli consigliato con un qualificatore, consulta [Tipi di dati e valori letterali relativi agli intervalli](interval_data_types_spark.md).

Usa un valore letterale di intervallo per identificare periodi di tempo specifici, come `12 hours` o `6 months`. È possibile usare questi valori letterali di intervallo in condizioni e calcoli che comprendono espressioni datetime. 

 Un valore letterale relativo agli intervalli viene espresso come una combinazione della parola chiave INTERVAL con una quantità numerica e una parte di data supportata, ad esempio `INTERVAL '7 days'` o `INTERVAL '59 minutes'`. È possibile collegare diverse quantità e unità per formare un intervallo più preciso; ad esempio `INTERVAL '7 days, 3 hours, 59 minutes'`. Anche abbreviazioni e plurali di ciascuna unità sono supportati; ad esempio: `5 s`, `5 second` e `5 seconds` sono intervalli equivalenti.

Se non si specifica una parte data, il valore di intervallo rappresenterà i secondi. È possibile specificare il valore di quantità come una frazione (ad esempio: `0.5 days`).

Gli esempi seguenti mostrano una serie di calcoli con valori di intervallo diversi.

Quanto segue aggiunge 1 secondo alla data specificata.

```
select caldate + interval '1 second' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:00:01
(1 row)
```

Quanto segue aggiunge 1 minuto alla data specificata.

```
select caldate + interval '1 minute' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 00:01:00
(1 row)
```

Vengono aggiunte 3 ore e 35 minuti alla data specificata.

```
select caldate + interval '3 hours, 35 minutes' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 03:35:00
(1 row)
```

Quanto segue aggiunge 52 settimane alla data specificata.

```
select caldate + interval '52 weeks' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-12-30 00:00:00
(1 row)
```

Vengono aggiunti 1 settimana, 1 ora, 1 minuto e 1 secondo alla data specificata.

```
select caldate + interval '1w, 1h, 1m, 1s' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2009-01-07 01:01:01
(1 row)
```

Di seguito vengono aggiunte 12 ore (mezza giornata) alla data specificata.

```
select caldate + interval '0.5 days' as dateplus from date
where caldate='12-31-2008';
dateplus
---------------------
2008-12-31 12:00:00
(1 row)
```

Vengono sottratti 4 mesi dal 15 febbraio 2023 e il risultato è il 15 ottobre 2022.

```
select date '2023-02-15' - interval '4 months';

?column?
---------------------
2022-10-15 00:00:00
```

Vengono sottratti 4 mesi dal 31 marzo 2023 e il risultato è il 30 novembre 2022. Il calcolo considera il numero di giorni in un mese.

```
select date '2023-03-31' - interval '4 months';

?column?
---------------------
2022-11-30 00:00:00
```