Oracle Database
Travailler avec des dates
Recherche…
Date arithmétique
Oracle supporte DATE
(inclut le temps à la seconde près) et TIMESTAMP
(inclut le temps à la fraction de seconde) des types de données, qui permettent l'arithmétique (addition et soustraction) de manière native. Par exemple:
Pour obtenir le lendemain:
select to_char(sysdate + 1, 'YYYY-MM-DD') as tomorrow from dual;
Pour obtenir la veille:
select to_char(sysdate - 1, 'YYYY-MM-DD') as yesterday from dual;
Pour ajouter 5 jours à la date actuelle:
select to_char(sysdate + 5, 'YYYY-MM-DD') as five_days_from_now from dual;
Pour ajouter 5 heures à la date actuelle:
select to_char(sysdate + (5/24), 'YYYY-MM-DD HH24:MI:SS') as five_hours_from_now from dual;
Pour ajouter 10 minutes à la date actuelle:
select to_char(sysdate + (10/1440), 'YYYY-MM-DD HH24:MI:SS') as ten_mintues_from_now from dual;
Pour ajouter 7 secondes à la date actuelle:
select to_char(sysdate + (7/86400), 'YYYY-MM-DD HH24:MI:SS') as seven_seconds_from_now from dual;
Pour sélectionner des lignes dont la date de hire_date
est il y a 30 jours ou plus:
select * from emp where hire_date < sysdate - 30;
Pour sélectionner des lignes où la colonne last_updated
est à la dernière heure:
select * from logfile where last_updated >= sysdate - (1/24);
Oracle fournit également le type de données intégré INTERVAL
qui représente une durée (par exemple, 1,5 jour, 36 heures, 2 mois, etc.). Celles-ci peuvent également être utilisées avec l'arithmétique avec les expressions DATE
et TIMESTAMP
. Par exemple:
select * from logfile where last_updated >= sysdate - interval '1' hour;
Fonction add_months
Syntaxe: add_months(p_date, integer) return date;
La fonction Add_months ajoute des mois à la date p_date.
SELECT add_months(date'2015-01-12', 2) m FROM dual;
M |
---|
2015-03-12 |
Vous pouvez également soustraire des mois en utilisant un amt
négatif
SELECT add_months(date'2015-01-12', -2) m FROM dual;
M |
---|
2014-11-12 |
Lorsque le mois calculé a moins de jours que la date indiquée, le dernier jour du mois calculé sera renvoyé.
SELECT to_char( add_months(date'2015-01-31', 1),'YYYY-MM-DD') m FROM dual;
M |
---|
2015-02-28 |