Dans PostgreSQL, le extract()
récupère des sous-champs tels que l'année, le mois, l'heure ou la minute, à partir d'une valeur de date/heure.
C'est équivalent au date_part()
fonction, bien qu'avec une syntaxe légèrement différente.
Syntaxe
La syntaxe ressemble à ceci :
EXTRACT(field FROM source)
Où :
field
est un identifiant ou une chaîne qui sélectionne le champ à extraire de la valeur source.source
est un horodatage ou un intervalle .
Exemple – Horodatage
Voici un exemple de base pour montrer comment récupérer un champ à partir d'un horodatage valeur.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');
Résultat :
10
Cet exemple récupère le champ heure d'un horodatage valeur.
Comme mentionné, le premier argument peut être un identifiant ou une chaîne. C'est l'une des différences entre extract()
et date_part()
. Lors de l'utilisation de date_part()
, vous devez fournir une chaîne pour cet argument.
Voici à nouveau le même exemple, sauf sous forme de chaîne.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');
Résultat :
10
Voici un exemple avec le même horodatage, mais cette fois je récupère le champ année.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35');
Résultat :
2022
Exemple – Intervalle
Dans cet exemple, je récupère une partie date d'un intervalle valeur.
SELECT extract(hour FROM interval '7 hours 45 minutes');
Résultat :
7
Dans l'exemple suivant, la fonction renvoie correctement le nombre d'heures, même si je ne fournis que le nombre de minutes.
SELECT extract(hour FROM interval '120 minutes');
Résultat :
2
Cependant, ne comptez pas sur cette technique. Vous constaterez peut-être que vous n'obtenez pas toujours le résultat que vous attendez.
Par exemple :
SELECT extract(hour FROM interval '100 minutes');
Résultat :
1
Et un autre :
SELECT extract(minute FROM interval '2 hours');
Résultat :
0
Noms de champ
Le premier argument peut être l'un des suivants :
century
day
decade
dow
doy
epoch
hour
isodow
isoyear
microseconds
millennium
milliseconds
minute
month
quarter
second
timezone
timezone_hour
timezone_minute
week
year
Ce sont les mêmes que les valeurs valides pour date_part()
fonction.