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
La fonction EXTRACT renvoie une partie de date ou d'heure à partir d'une valeur TIMESTAMP, TIMESTAMPTZ, TIME, 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
-
Colonne ou expression dont le type de données est TIMESTAMP, TIMESTAMPTZ, TIME, TIMETZ, INTERVAL YEAR TO MONTH ou INTERVAL DAY TO SECOND.
Type de retour
INTEGER si la valeur source est le type de données 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 du jour 1
de l'intervalle entre jours et secondes 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 mensuelle 3
de l'année au mois 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 mensuelle 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 horaire 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 11
de 1 heure 11 minutes 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 des secondes 1.11
de 1 jour 1 heure 1 minute 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