

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Types datetime
<a name="Datetime_types"></a>

Les types de données Datetime incluent DATE, TIME, TIMESTAMP\$1LTZ et TIMESTAMP\$1NTZ.

**Topics**
+ [DATE](Datetime_types-date.md)
+ [TIMESTAMP\$1LTZ](Datetime_types-timestamp_LTZ.md)
+ [TIMESTAMP\$1NTZ](Datetime_types-TIMESTAMP_NTZ.md)
+ [Exemples avec les types datetime](Examples_with_datetime_types.md)
+ [Littéraux de type date, heure et horodatage](Date_and_time_literals.md)
+ [Littéraux de type interval](Interval_literals.md)
+ [Types de données et littéraux interval](interval_data_types_spark.md)

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

Utilisez le type de données DATE pour stocker les dates calendaires simples sans horodatage.

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

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

Utilisez le type de données TIMESTAMP\$1LTZ pour stocker les valeurs d'horodatage complètes qui incluent la date, l'heure et le fuseau horaire local. 

TIMESTAMP représente des valeurs comprenant les valeurs des champs`year`,,`month`,`day`, et `hour` `minute``second`, avec le fuseau horaire local de la session. La `timestamp` valeur représente un point absolu dans le temps.

Dans Spark, TIMESTAMP est un alias spécifié par l'utilisateur associé à l'une des variantes TIMESTAMP\$1LTZ et TIMESTAMP\$1NTZ. Vous pouvez définir le type d'horodatage par défaut comme TIMESTAMP\$1LTZ (valeur par défaut) ou TIMESTAMP\$1NTZ via la configuration. `spark.sql.timestampType`

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

Utilisez le type de données TIMESTAMP\$1NTZ pour stocker les valeurs d'horodatage complètes qui incluent la date et l'heure, sans le fuseau horaire local. 

TIMESTAMP représente des valeurs comprenant les valeurs des champs`year`,`month`,`day`, `hour``minute`, et. `second` Toutes les opérations sont effectuées sans tenir compte du fuseau horaire.

Dans Spark, TIMESTAMP est un alias spécifié par l'utilisateur associé à l'une des variantes TIMESTAMP\$1LTZ et TIMESTAMP\$1NTZ. Vous pouvez définir le type d'horodatage par défaut comme TIMESTAMP\$1LTZ (valeur par défaut) ou TIMESTAMP\$1NTZ via la configuration. `spark.sql.timestampType`

# Exemples avec les types datetime
<a name="Examples_with_datetime_types"></a>

Les exemples suivants vous montrent comment utiliser les types de date/heure pris en charge par AWS Clean Rooms.

## Exemples de date
<a name="Examples_with_datetime_types-date-examples"></a>

Les exemples suivants insèrent des dates qui ont des formats différents et affichent le résultat. 

```
select * from datetable order by 1;

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

Si vous insérez une valeur d’horodatage dans une colonne DATE, la partie temps est ignorée et seule la date est chargée.

## Exemples d’heure
<a name="Examples_with_datetime_types-time-examples"></a>

Les exemples suivants insèrent des valeurs TIME et TIMETZ qui n’ont pas le même format et affichent la sortie.

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

# Littéraux de type date, heure et horodatage
<a name="Date_and_time_literals"></a>

Vous trouverez ci-dessous les règles d'utilisation des littéraux de date, d'heure et d'horodatage pris en charge par AWS Clean Rooms Spark SQL. 

## Dates
<a name="Date_and_time_literals-dates"></a>

Le tableau suivant présente les dates d'entrée qui sont des exemples valides de valeurs de date littérales que vous pouvez charger dans AWS Clean Rooms des tables. La valeur `MDY DateStyle` par défaut est supposée être en vigueur. Ce mode signifie que la valeur month précède la valeur day dans les chaînes telles que `1999-01-08` et `01/02/00`. 

**Note**  
Une date ou un horodatage littéral doit être placé entre guillemets lorsque vous le chargez dans une table.

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

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

Le tableau suivant indique les heures d'entrée qui sont des exemples valides de valeurs temporelles littérales que vous pouvez charger dans AWS Clean Rooms des tables. 

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

## Valeurs datetime spéciales
<a name="Date_and_time_literals-special-datetime-values"></a>

Le tableau suivant indique les valeurs spéciales qui peuvent être utilisées comme littéraux de date/heure et comme arguments de fonctions de date. Elles requièrent des apostrophes droites et sont converties en valeurs timestamp régulières lors du traitement de la requête. 

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

Les exemples suivants montrent comment `now` et comment utiliser `today` la fonction 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)
```

# Littéraux de type interval
<a name="Interval_literals"></a>

Vous trouverez ci-dessous les règles d'utilisation des littéraux d'intervalle pris en charge par AWS Clean Rooms Spark SQL.

Utilisez un littéral de type interval pour identifier les périodes spécifiques, comme `12 hours` ou `6 weeks`. Vous pouvez utiliser ces littéraux de type interval dans les cas et les calculs qui impliquent des expressions de type datetime. 

**Note**  
Vous ne pouvez pas utiliser le type de données INTERVAL pour les colonnes des AWS Clean Rooms tables.

 Un intervalle est exprimé comme la combinaison du mot clé INTERVAL avec une quantité numérique et d’une partie date prise en charge ; par exemple : `INTERVAL '7 days'` ou `INTERVAL '59 minutes'`. Plusieurs quantités et unités peuvent être associées pour former un intervalle plus précis ; par exemple : `INTERVAL '7 days, 3 hours, 59 minutes'`. Les abréviations et les pluriels de chaque unité sont également pris en charge ; par exemple : `5 s`, `5 second` et `5 seconds` sont des intervalles équivalents.

Si vous ne spécifiez pas une partie date, la valeur de l’intervalle correspond à des secondes. Vous pouvez spécifier la valeur de la quantité sous forme de fraction (par exemple : `0.5 days`).

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

Les exemples suivants illustrent une série de calculs avec différentes valeurs d’intervalle.

L'exemple suivant ajoute 1 seconde à la date spécifiée.

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

L'exemple suivant ajoute 1 minute à la date spécifiée.

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

L'exemple suivant ajoute 3 heures et 35 minutes à la date spécifiée.

```
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'exemple suivant ajoute 52 semaines à la date spécifiée.

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

L'exemple suivant ajoute 1 semaine, 1 heure, 1 minute et 1 seconde à la date spécifiée.

```
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'exemple suivant ajoute 12 heures (une demi-journée) à la date spécifiée.

```
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'exemple suivant soustrait 4 mois à compter du 31 mars 2023 et le résultat est le 30 novembre 2022. Le calcul prend en compte le nombre de jours dans un mois.

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

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



# Types de données et littéraux interval
<a name="interval_data_types_spark"></a>

Vous pouvez utiliser un type de données interval pour stocker les durées dans des unités telles que `seconds`, `minutes`, `hours`, `days`, `months` et `years`. Les types de données et les littéraux interval peuvent être utilisés dans les calculs de date/heure, tels que l’ajout d’intervalles aux dates et aux horodatages, la somme des intervalles et la soustraction d’un intervalle d’une date ou d’un horodatage. Les littéraux interval peuvent être utilisés comme valeurs d’entrée pour intercaler les colonnes de type de données d’une table. 

## Syntaxe du type de données interval
<a name="interval_data_types-syntax"></a>

Pour spécifier un type de données interval afin de stocker une durée en années et en mois :

```
INTERVAL year_to_month_qualifier
```

Pour spécifier un type de données interval afin de stocker une durée en jours, heures, minutes et secondes :

```
INTERVAL day_to_second_qualifier [ (fractional_precision) ]
```

## Syntaxe du littéral interval
<a name="interval_data_types-syntax-literal"></a>

Pour spécifier un littéral interval afin de définir une durée en années et en mois :

```
INTERVAL quoted-string year_to_month_qualifier
```

Pour spécifier un littéral interval afin de définir une durée en jours, heures, minutes et secondes :

```
INTERVAL quoted-string day_to_second_qualifier [ (fractional_precision) ]
```

## Arguments
<a name="interval_data_types-arguments"></a>

 *quoted-string*   
Spécifie une valeur numérique positive ou négative spécifiant une quantité et l’unité date/heure en tant que chaîne d’entrée. **Si la *chaîne entre guillemets ne contient qu'un chiffre*, elle AWS Clean Rooms détermine les unités à partir du qualificatif year\$1to\$1month\$1qualifier ou du day\$1to\$1second\$1qualifier.** Par exemple, `'23' MONTH` représente `1 year 11 months`, `'-2' DAY` représente `-2 days 0 hours 0 minutes 0.0 seconds`, `'1-2' MONTH` représente `1 year 2 months` et `'13 day 1 hour 1 minute 1.123 seconds' SECOND` représente `13 days 1 hour 1 minute 1.123 seconds`. Pour plus d’informations sur les formats de sortie d’un intervalle, consultez [Styles d’intervalle](#interval_data_types-interval-styles).

 *year\$1to\$1month\$1qualifier*   
Spécifie la plage de l’intervalle. Si vous utilisez un qualificatif et que vous créez un intervalle dont les unités de temps sont inférieures au qualificatif, AWS Clean Rooms les plus petites parties de l'intervalle sont tronquées et supprimées. Les valeurs valides pour *year\$1to\$1month\$1qualifier* sont les suivantes :  
+ `YEAR`
+ `MONTH`
+ `YEAR TO MONTH`

 *day\$1to\$1second\$1qualifier*   
Spécifie la plage de l’intervalle. Si vous utilisez un qualificatif et que vous créez un intervalle dont les unités de temps sont inférieures au qualificatif, AWS Clean Rooms les plus petites parties de l'intervalle sont tronquées et supprimées. Les valeurs valides pour *day\$1to\$1second\$1qualifier* sont les suivantes :  
+ `DAY`
+ `HOUR`
+ `MINUTE`
+ `SECOND`
+ `DAY TO HOUR`
+ `DAY TO MINUTE`
+ `DAY TO SECOND`
+ `HOUR TO MINUTE`
+ `HOUR TO SECOND`
+ `MINUTE TO SECOND`
La sortie du littéral INTERVAL est tronquée au plus petit composant INTERVAL spécifié. Par exemple, lorsque vous utilisez un qualificatif MINUTE, AWS Clean Rooms les unités de temps inférieures à MINUTE sont supprimées.  

```
select INTERVAL '1 day 1 hour 1 minute 1.123 seconds' MINUTE
```
La valeur résultante est tronquée à `'1 day 01:01:00'`.

 *fractional\$1precision*   
Paramètre facultatif qui spécifie le nombre de chiffres fractionnaires autorisés dans l’intervalle. L’argument *fractional\$1precision* ne doit être spécifié que si votre intervalle contient SECOND. Par exemple, `SECOND(3)` crée un intervalle qui n’autorise que trois chiffres fractionnaires, tels que 1,234 seconde. Le nombre maximum de chiffres fractionnaires est de six.

La configuration de session `interval_forbid_composite_literals` détermine si une erreur est renvoyée lorsqu’un intervalle est spécifié avec les parties YEAR TO MONTH et DAY TO SECOND. 

## Arithmétique des intervalles
<a name="interval_data_types-arithmetic"></a>

Vous pouvez utiliser des valeurs interval avec d’autres valeurs datetime pour effectuer des opérations arithmétiques. Les tableaux suivants décrivent les opérations disponibles et le type de données résultant de chaque opération. 

**Note**  
 Les opérations qui peuvent produire les résultats `date` et `timestamp` le font en fonction de la plus petite unité de temps impliquée dans l’équation. Par exemple, lorsque vous ajoutez un `interval` à une `date`, le résultat est une `date`, s’il s’agit d’un intervalle YEAR TO MONTH, et un horodatage s’il s’agit d’un intervalle DAY TO SECOND. 

Les opérations où le premier opérande est un `interval` produisent les résultats suivants pour le second opérande donné :

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

Les opérations où le premier opérande est une `date` produisent les résultats suivants pour le second opérande donné :

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

Les opérations où le premier opérande est une `timestamp` produisent les résultats suivants pour le second opérande donné :

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

## Styles d’intervalle
<a name="interval_data_types-interval-styles"></a>
+ `postgres` : suit le style PostgreSQL. Il s’agit de l’option par défaut.
+ `postgres_verbose` : suit le style détaillé PostgreSQL.
+ `sql_standard` : suit le style des littéraux interval SQL standard.

La commande suivante définit le style d’intervalle sur `sql_standard`.

```
SET IntervalStyle to 'sql_standard';
```

**format de sortie postgres**

Le format de sortie pour le style d’intervalle `postgres` est le suivant. Chaque valeur numérique peut être négative.

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

**format de sortie postgres\$1verbose**

La syntaxe postgres\$1verbose est similaire à postgres, mais les sorties postgres\$1verbose contiennent également l’unité de temps.

```
'[@] <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
```

**format de sortie sql\$1standard**

Les valeurs interval year to month sont formatées comme suit. La spécification d’un signe négatif avant l’intervalle indique que l’intervalle est une valeur négative et s’applique à l’ensemble de l’intervalle.

```
'[-]yy-mm'
```

Les valeurs interval day to second sont formatées comme suit.

```
'[-]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
```

## Exemples de type de données interval
<a name="interval_data_types-examples"></a>

Les exemples suivants montrent comment utiliser les types de données INTERVAL avec des tables.

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

## Exemples de littéraux interval
<a name="interval_data_types_literals-examples"></a>

Les exemples suivants sont exécutés avec le style d’intervalle défini sur `postgres`.

L’exemple suivant montre comment créer un littéral INTERVAL de 1 an.

```
select INTERVAL '1' YEAR 

intervaly2m
---------------
1 years 0 mons
```

Si vous spécifiez une *quoted-string* qui dépasse le qualificatif, les unités de temps restantes sont tronquées par rapport à l’intervalle. Dans l’exemple suivant, un intervalle de 13 mois devient 1 an et 1 mois, mais le mois restant est omis en raison du qualificatif YEAR.

```
select INTERVAL '13 months' YEAR

intervaly2m
---------------
1 years 0 mons
```

Si vous utilisez un qualificatif inférieur à votre chaîne d’intervalle, les unités restantes sont incluses.

```
select INTERVAL '13 months' MONTH

intervaly2m
---------------
1 years 1 mons
```

Si vous spécifiez une précision dans votre intervalle, le nombre de chiffres fractionnaires est tronqué à la précision spécifiée.

```
select INTERVAL '1.234567' SECOND (3)

intervald2s
--------------------------------
0 days 0 hours 0 mins 1.235 secs
```

Si vous ne spécifiez aucune précision, AWS Clean Rooms utilise la précision maximale de 6.

```
select INTERVAL '1.23456789' SECOND

intervald2s
-----------------------------------
0 days 0 hours 0 mins 1.234567 secs
```

L’exemple suivant montre comment créer un intervalle par plage.

```
select INTERVAL '2:2' MINUTE TO SECOND

intervald2s
------------------------------
0 days 0 hours 2 mins 2.0 secs
```

Les qualificatifs dictent les unités que vous spécifiez. Par exemple, même si l'exemple suivant utilise la même *chaîne entre guillemets* de « 2:2 » que l'exemple précédent, il AWS Clean Rooms reconnaît qu'il utilise des unités de temps différentes en raison du qualificatif.

```
select INTERVAL '2:2' HOUR TO MINUTE

intervald2s
------------------------------
0 days 2 hours 2 mins 0.0 secs
```

Les abréviations et les pluriels de chaque unité sont également pris en charge. Par exemple, `5s`, `5 second` et `5 seconds` sont des intervalles équivalents. Les unités prises en charge sont les années, les mois, les heures, les minutes et les secondes.

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

# Exemples de littéraux interval sans syntaxe de qualificatif
<a name="interval_literals_examples"></a>

**Note**  
Les exemples suivants illustrent l’utilisation d’un littéral interval sans qualificatif `YEAR TO MONTH` ou `DAY TO SECOND`. Pour plus d’informations sur l’utilisation du littéral interval recommandé avec un qualificatif, consultez [Types de données et littéraux interval](interval_data_types_spark.md).

Utilisez un littéral de type interval pour identifier les périodes spécifiques, comme `12 hours` ou `6 months`. Vous pouvez utiliser ces littéraux de type interval dans les cas et les calculs qui impliquent des expressions de type datetime. 

 Un littéral interval est exprimé comme la combinaison du mot clé INTERVAL avec une quantité numérique et d’une partie date prise en charge ; par exemple : `INTERVAL '7 days'` ou `INTERVAL '59 minutes'`. Plusieurs quantités et unités peuvent être associées pour former un intervalle plus précis ; par exemple : `INTERVAL '7 days, 3 hours, 59 minutes'`. Les abréviations et les pluriels de chaque unité sont également pris en charge ; par exemple : `5 s`, `5 second` et `5 seconds` sont des intervalles équivalents.

Si vous ne spécifiez pas une partie date, la valeur de l’intervalle correspond à des secondes. Vous pouvez spécifier la valeur de la quantité sous forme de fraction (par exemple : `0.5 days`).

Les exemples suivants illustrent une série de calculs avec différentes valeurs d’intervalle.

Ce qui suit ajoute 1 seconde à la date spécifiée.

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

Ce qui suit ajoute 1 minute à la date spécifiée.

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

Ce qui suit ajoute 3 heures et 35 minutes à la date spécifiée.

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

Ce qui suit ajoute 52 semaines à la date spécifiée.

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

Ce qui suit ajoute 1 semaine, 1 heure, 1 minute, et 1 seconde à la date spécifiée.

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

Ce qui suit ajoute 12 heures (la moitié d’une journée) à la date spécifiée.

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

Ce qui suit soustrait 4 mois à compter du 15 février 2023 et le résultat est le 15 octobre 2022.

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

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

Ce qui suit soustrait 4 mois à compter du 31 mars 2023 et le résultat est le 30 novembre 2022. Le calcul prend en compte le nombre de jours dans un mois.

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

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