Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog
Fonction EXTRACT
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
EXTRACT(datepart FROM source)
Arguments
- 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.
- 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
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
L’exemple suivant renvoie le nombre de semaines pour les ventes au cours desquelles le prix payé était de 10 000 $ ou plus. Cet exemple utilise les données TICKIT. Pour plus d’informations, consultez Exemple de base de données.
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
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
L’exemple de table TIME_TEST suivant comporte une colonne TIME_VAL (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_val.
select extract(minute from time_val) as minutes from time_test; minutes ----------- 0 0 58
L’exemple suivant extrait les heures de chaque time_val.
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
L’exemple de table TIMETZ_TEST suivant comporte une colonne TIMETZ_VAL (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_val.
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
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