PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment Extract() fonctionne dans PostgreSQL

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.