Manipuler et calculer avec les dates
Les fonctions de dates permettent de manipuler les dates, calculer des intervalles, extraire des composants (année, mois, jour) et effectuer des opérations temporelles.
SELECT SYSDATE AS date_actuelle,
SYSDATE + 7 AS dans_une_semaine,
SYSDATE - 30 AS il_y_a_30_jours
FROM DUAL;
SYSDATE retourne la date et l'heure courantes du serveur. Vous pouvez ajouter ou soustraire des jours.
SELECT date_embauche,
ADD_MONTHS(date_embauche, 3) AS apres_3_mois,
ADD_MONTHS(date_embauche, -6) AS avant_6_mois
FROM EMPLOYES;
ADD_MONTHS(date, nombre) ajoute (ou retire si négatif) un nombre de mois à une date.
SELECT nom,
date_embauche,
ROUND(MONTHS_BETWEEN(SYSDATE, date_embauche), 1) AS mois_anciennete
FROM EMPLOYES;
MONTHS_BETWEEN(date1, date2) retourne le nombre de mois entre deux dates.
SELECT SYSDATE,
LAST_DAY(SYSDATE) AS dernier_jour_mois,
LAST_DAY(SYSDATE) - SYSDATE AS jours_restants
FROM DUAL;
SELECT SYSDATE,
NEXT_DAY(SYSDATE, 'MONDAY') AS prochain_lundi
FROM DUAL;
SELECT date_embauche,
TRUNC(date_embauche, 'MONTH') AS debut_mois,
TRUNC(date_embauche, 'YEAR') AS debut_annee
FROM EMPLOYES;
Tronque la date au début du mois, de l'année, etc.
SELECT date_embauche,
EXTRACT(YEAR FROM date_embauche) AS annee,
EXTRACT(MONTH FROM date_embauche) AS mois,
EXTRACT(DAY FROM date_embauche) AS jour
FROM EMPLOYES;
FLOOR(MONTHS_BETWEEN(SYSDATE, date_embauche) / 12)
-- Employés embauchés il y a plus de 5 ans
SELECT nom, date_embauche
FROM EMPLOYES
WHERE date_embauche < ADD_MONTHS(SYSDATE, -60);
-- Calculer le nombre de jours d'ancienneté
SELECT nom,
TRUNC(SYSDATE - date_embauche) AS jours_anciennete,
TRUNC((SYSDATE - date_embauche) / 365.25, 1) AS annees_anciennete
FROM EMPLOYES;
-- Trouver les employés embauchés un lundi
SELECT nom, date_embauche,
TO_CHAR(date_embauche, 'DAY') AS jour_semaine
FROM EMPLOYES
WHERE TO_CHAR(date_embauche, 'DY') = 'MON';
Utilise MONTHS_BETWEEN pour calculer la différence avec SYSDATE, divise par 12 pour les années, et utilise MOD pour obtenir les mois restants. TRUNC évite les décimales.
Combine ADD_MONTHS pour projeter dans le futur (fin de période d'essai, anniversaire), LAST_DAY pour le dernier jour du mois d'embauche, et EXTRACT pour filtrer par année.