PostgreSQL EXTRACT
La fonction EXTRACT de PostgreSQL est utilisée pour récupérer des sous-champs spécifiques tels que l'année, le mois, le jour, l'heure, etc. à partir des valeurs de date/heure. Elle est essentielle pour la manipulation et l'analyse de la date dans les requêtes SQL.
Utilisation
La fonction EXTRAIRE est particulièrement utile lorsque vous devez isoler une partie spécifique d'une valeur de date ou d'heure à des fins de filtrage, de regroupement ou d'affichage. Sa syntaxe est simple :
EXTRACT(field FROM source)
Dans cette syntaxe, field
représente la partie de la date et de l'heure que vous souhaitez extraire (par exemple, YEAR
, MONTH
, DOW
, DOY
, EPOCH
), et source
est toute expression renvoyant une valeur timestamp
, date
, interval
, ou time
, et pas seulement des littéraux.
Exemples
1. Année d'extraction
SELECT EXTRACT(YEAR FROM '2023-10-14'::date) AS year;
Cet exemple extrait l'année 2023
de la date spécifiée.
2. Extraction du mois à partir de la date courante
SELECT EXTRACT(MONTH FROM CURRENT_DATE) AS month;
Ici, la fonction EXTRACT récupère le mois en cours à partir de la date système.
3. Extraction de l'heure à partir de l'horodatage
SELECT EXTRACT(HOUR FROM TIMESTAMP '2023-10-14 15:23:45') AS hour;
Cet exemple extrait l'heure 15
de l'horodatage donné.
4. Extraction du jour de la semaine
SELECT EXTRACT(DOW FROM CURRENT_DATE) AS day_of_week;
Cet exemple permet d'obtenir le jour de la semaine, le dimanche étant 0
et le samedi 6
.
5. Utiliser EXTRACT avec GROUP BY
SELECT EXTRACT(YEAR FROM order_date) AS order_year, COUNT(*)
FROM orders
GROUP BY order_year;
Cet exemple regroupe les commandes par année, démontrant l'utilisation d'EXTRACT avec GROUP BY
.
Conseils et bonnes pratiques
- La précision est importante. Assurez-vous que le site
source
est au bon format de date et d'heure afin d'éviter les erreurs ou les résultats inattendus. - Combinez avec d'autres fonctions. Utilisez EXTRACT avec
GROUP BY
ouORDER BY
pour organiser les résultats par intervalles de temps. - Tenez compte des fuseaux horaires. Tenez compte du fuseau horaire de vos données pour garantir une extraction précise.
- Vérifier la présence de valeurs nulles. Traitez les nullités potentielles dans les champs date/heure à l'aide de
COALESCE
ou de fonctions similaires afin d'éviter les échecs des requêtes. Par exemple :
SELECT EXTRACT(YEAR FROM COALESCE(order_date, CURRENT_DATE)) AS year;
- Types de retour. EXTRACT renvoie une valeur en double précision pour tous les champs, sauf lorsque la source est un intervalle, où il renvoie un nombre entier pour les champs tels que
YEAR
,MONTH
, etc. - EXTRACT vs DATE_PART. Les deux fonctions ont des objectifs similaires, mais
DATE_PART
est une syntaxe de fonction plus traditionnelle dans PostgreSQL. Choisissez en fonction de votre convention personnelle ou de votre projet.