Fonction SQL ORACLE – EXTRACT()

Illustration du tutoriel SQL Oracle : Fonction SQL ORACLE – EXTRACT()

La fonction SQL ORACLE EXTRACT extraie n’importe quelle partie d’un champ DATE. Les champs qu’on peut extraire sont:

Publicité

YEAR : Année
MOUNTH : Mois
DAY : Jour

SELECT EXTRACT(YEAR FROM SYSDATE),
EXTRACT(MONTH FROM SYSDATE),
EXTRACT(DAY FROM SYSDATE)
FROM DUAL;

EXTRACT(YEARFROMSYSDATE) EXTRACT(MONTHFROMSYSDATE) EXTRACT(DAYFROMSYSDATE) 
------------------------ ------------------------- ----------------------- 
2016                     2                         18 

Syntaxe de EXTRACT en SQL Oracle

EXTRACT(composante FROM date_ou_timestamp)

EXTRACT isole une partie précise d'une date : année, mois, jour, heure, minute ou seconde. Le résultat est un nombre, directement utilisable dans des calculs ou des GROUP BY.

🧪 Envie de pratiquer ? Exécutez les exemples de cet article dans notre SQL Playground gratuit — aucun logiciel à installer.

ComposanteType sourceExemple sur le 15/03/2026 14:30
YEARDATE / TIMESTAMP2026
MONTHDATE / TIMESTAMP3
DAYDATE / TIMESTAMP15
HOURTIMESTAMP uniquement14
MINUTETIMESTAMP uniquement30
SECONDTIMESTAMP uniquement0

Exemples pratiques de EXTRACT

SELECT EXTRACT(YEAR  FROM SYSDATE) FROM DUAL;   -- 2026
SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;   -- 3
SELECT EXTRACT(DAY   FROM date_commande) FROM commandes;

Regrouper un chiffre d’affaires par année et par mois — l’usage n°1 de EXTRACT :

SELECT EXTRACT(YEAR FROM date_vente)  AS annee,
       EXTRACT(MONTH FROM date_vente) AS mois,
       SUM(montant)                   AS ca
FROM ventes
GROUP BY EXTRACT(YEAR FROM date_vente), EXTRACT(MONTH FROM date_vente)
ORDER BY annee, mois;

Filtrer sur une année :

SELECT * FROM commandes WHERE EXTRACT(YEAR FROM date_commande) = 2026;

Le piège HOUR sur un type DATE

Un DATE Oracle contient pourtant l’heure, mais EXTRACT(HOUR FROM une_date) déclenche l’erreur ORA-30076. Convertissez d’abord en TIMESTAMP :

SELECT EXTRACT(HOUR FROM CAST(date_creation AS TIMESTAMP)) FROM logs;
-- ou plus simple, avec TO_CHAR :
SELECT TO_CHAR(date_creation, 'HH24') FROM logs;

EXTRACT vs TO_CHAR : lequel utiliser ?

CritèreEXTRACTTO_CHAR
Type de résultatNUMBER (calculs directs)VARCHAR2 (affichage)
Standard SQLouinon (propre à Oracle)
Heures sur un DATEnon (ORA-30076)oui
Formats riches (jour en lettres…)nonoui
SELECT EXTRACT(MONTH FROM SYSDATE)        FROM DUAL;  -- 3   (nombre)
SELECT TO_CHAR(SYSDATE, 'MM')             FROM DUAL;  -- '03' (texte)
SELECT TO_CHAR(SYSDATE, 'Month','NLS_DATE_LANGUAGE=FRENCH') FROM DUAL;  -- 'Mars'

Règle simple : EXTRACT pour calculer et regrouper, TO_CHAR pour afficher et formater.

Sur le même thème

Un nouveau tutoriel SQL par semaine

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

Publicité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Publicité