

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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.

# Fonction EXTRACT
<a name="r_EXTRACT_function"></a>

La fonction EXTRACT renvoie une partie de date ou d’heure à partir d’une valeur TIMESTAMP, TIMESTAMPTZ, TIMETZ, INTERVAL YEAR TO MONTH ou INTERVAL DAY TO SECOND. Les exemples incluent le jour, le mois, l’année, l’heure, la minute, la seconde, la milliseconde ou la microseconde d’un horodatage.

## Syntaxe
<a name="r_EXTRACT_function-synopsis"></a>

```
EXTRACT(datepart FROM source)
```

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

 *datepart*   
Sous-champ d’une date ou d’une heure à extraire, tel que le jour, le mois, l’année, l’heure, la minute, la seconde, la milliseconde ou la microseconde. Pour les valeurs possibles, consultez [Parties de date pour les fonctions de date ou d’horodatage](r_Dateparts_for_datetime_functions.md). 

 *source*   
Une colonne ou une expression qui évalue un type de données TIMESTAMP, TIMESTAMPTZ, TIME, TIMETZ, INTERVAL YEAR TO MONTH ou INTERVAL DAY TO SECOND.

## Type de retour
<a name="r_EXTRACT_function-return-type"></a>

INTEGER si la valeur *source* est de type TIMESTAMP, TIME, TIMETZ, INTERVAL YEAR TO MONTH ou INTERVAL DAY TO SECOND.

DOUBLE PRECISION si la valeur *source* est de type TIMESTAMPTZ.

## Exemples avec TIMESTAMP
<a name="r_EXTRACT_function-examples"></a>

L’exemple suivant renvoie le nombre de semaines pour les ventes au cours desquelles le prix payé était de 10 000 \$1 ou plus. Cet exemple utilise les données TICKIT. Pour plus d’informations, consultez [Exemple de base de données](c_sampledb.md).

```
select salesid, extract(week from saletime) as weeknum
from sales 
where pricepaid > 9999 
order by 2;

salesid | weeknum
--------+---------
 159073 |       6
 160318 |       8
 161723 |      26
```

L’exemple suivant renvoie la valeur de minute à partir d’une valeur d’horodatage littérale. 

```
select extract(minute from timestamp '2009-09-09 12:08:43');
            
date_part
-----------
8
```

L’exemple suivant renvoie la valeur de la milliseconde à partir d’une valeur littérale d’horodatage. 

```
select extract(ms from timestamp '2009-09-09 12:08:43.101');
            
date_part
-----------
101
```

## Exemples avec TIMESTAMPTZ
<a name="r_EXTRACT_function-examples-timestamptz"></a>

L’exemple suivant renvoie la valeur de l’année à partir d’une valeur littérale de timestamptz. 

```
select extract(year from timestamptz '1.12.1997 07:37:16.00 PST');
            
date_part
-----------
1997
```

## Exemples avec TIME
<a name="r_EXTRACT_function-examples-time"></a>

L’exemple de table TIME\$1TEST suivant comporte une colonne TIME\$1VAL (type TIME) avec trois valeurs insérées. 

```
select time_val from time_test;
            
time_val
---------------------
20:00:00
00:00:00.5550
00:58:00
```

L’exemple suivant extrait les minutes de chaque time\$1val.

```
select extract(minute from time_val) as minutes from time_test;
            
minutes
-----------
         0
         0
         58
```

L’exemple suivant extrait les heures de chaque time\$1val.

```
select extract(hour from time_val) as hours from time_test;
            
hours
-----------
         20
         0
         0
```

L’exemple suivant extrait des millisecondes d’une valeur littérale.

```
select extract(ms from time '18:25:33.123456');
            
 date_part
-----------
     123
```

## Exemples avec TIMETZ
<a name="r_EXTRACT_function-examples-timetz"></a>

L’exemple de table TIMETZ\$1TEST suivant comporte une colonne TIMETZ\$1VAL (type TIMETZ) avec trois valeurs insérées.

```
select timetz_val from timetz_test;
            
timetz_val
------------------
04:00:00+00
00:00:00.5550+00
05:58:00+00
```

L'exemple suivant extrait les heures de chaque timez\$1val.

```
select extract(hour from timetz_val) as hours from time_test;
            
hours
-----------
         4
         0
         5
```

L’exemple suivant extrait des millisecondes d’une valeur littérale. Les valeurs littérales ne sont pas converties en UTC avant le traitement de l’extraction. 

```
select extract(ms from timetz '18:25:33.123456 EST');
            
 date_part
-----------
     123
```

L’exemple suivant renvoie l’heure de décalage du fuseau horaire par rapport à UTC à partir d’une valeur littérale de timetz. 

```
select extract(timezone_hour from timetz '1.12.1997 07:37:16.00 PDT');
            
date_part
-----------
-7
```

## Exemples avec INTERVAL YEAR TO MONTH et INTERVAL DAY TO SECOND
<a name="r_EXTRACT_function-examples-interval"></a>

L’exemple suivant extrait la partie jour de `1` de INTERVAL DAY TO SECOND qui définit 36 heures, soit 1 jour et 12 heures.

```
select EXTRACT('days' from INTERVAL '36 hours' DAY TO SECOND)
  
 date_part
------------------
 1
```

L’exemple suivant extrait la partie mois de `3` de YEAR TO MONTH qui définit 15 mois, soit 1 an et 3 mois.

```
select EXTRACT('month' from INTERVAL '15 months' YEAR TO MONTH)
  
 date_part
------------------
 3
```

L’exemple suivant extrait la partie mois de `6` de 30 mois, soit 2 ans et 6 mois.

```
select EXTRACT('month' from INTERVAL '30' MONTH)
   
 date_part
------------------
 6
```

L’exemple suivant extrait la partie heure de `2` de 50 heures, soit 2 jours et 2 heures.

```
select EXTRACT('hours' from INTERVAL '50' HOUR)
  
 date_part
------------------
 2
```

L’exemple suivant extrait la partie minute de `11` de 1 heure 11 minutes et 11,123 secondes.

```
select EXTRACT('minute' from INTERVAL '70 minutes 70.123 seconds' MINUTE TO SECOND)
  
 date_part
------------------
 11
```

L’exemple suivant extrait la partie seconde de `1.11` de 1 jour 1 heure 1 minute et 1,11 seconde.

```
select EXTRACT('seconds' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND)
  
 date_part
------------------
 1.11
```

L’exemple suivant extrait le nombre total d’heures d’un INTERVAL. Chaque partie est extraite et ajoutée à un total.

```
select EXTRACT('days' from INTERVAL '50' HOUR) * 24 + EXTRACT('hours' from INTERVAL '50' HOUR)
 
 ?column?
------------------
 50
```

L’exemple suivant extrait le nombre total de secondes d’un INTERVAL. Chaque partie est extraite et ajoutée à un total.

```
select EXTRACT('days' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) * 86400 + 
       EXTRACT('hours' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) * 3600 +
       EXTRACT('minutes' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) * 60 + 
       EXTRACT('seconds' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND)
  
 ?column?
------------------
 90061.11
```