Oracle Database                
            Работа с датами
        
        
            
    Поиск…
Арифметика даты
 Oracle поддерживает DATE (включая время до ближайшей секунды) и TIMESTAMP (включая время до долей секунды) типов данных, которые позволяют арифметически (сложение и вычитание) изначально. Например: 
Чтобы получить следующий день:
select to_char(sysdate + 1, 'YYYY-MM-DD') as tomorrow from dual;
Чтобы получить предыдущий день:
select to_char(sysdate - 1, 'YYYY-MM-DD') as yesterday from dual;
Чтобы добавить 5 дней к текущей дате:
select to_char(sysdate + 5, 'YYYY-MM-DD') as five_days_from_now from dual;
Чтобы добавить 5 часов к текущей дате:
select to_char(sysdate + (5/24), 'YYYY-MM-DD HH24:MI:SS') as five_hours_from_now from dual;
Чтобы добавить 10 минут к текущей дате:
select to_char(sysdate + (10/1440), 'YYYY-MM-DD HH24:MI:SS') as ten_mintues_from_now from dual;
Чтобы добавить 7 секунд к текущей дате:
select to_char(sysdate + (7/86400), 'YYYY-MM-DD HH24:MI:SS') as seven_seconds_from_now from dual;
 Чтобы выбрать строки, где hire_date - 30 дней назад или более: 
select * from emp where hire_date < sysdate - 30;
 Чтобы выбрать строки, где last_updated столбец находится в последний час: 
select * from logfile where last_updated >= sysdate - (1/24);
 Oracle также предоставляет встроенный тип данных INTERVAL который представляет собой продолжительность времени (например, 1,5 дня, 36 часов, 2 месяца и т. Д.). Они также могут использоваться с арифметикой с выражениями DATE и TIMESTAMP . Например: 
select * from logfile where last_updated >= sysdate - interval '1' hour;
Функция Add_months
 Синтаксис: add_months(p_date, integer) return date; 
Функция Add_months добавляет несколько месяцев к дате p_date.
SELECT add_months(date'2015-01-12', 2) m FROM dual;
| M | 
|---|
| 2015-03-12 | 
 Вы также можете вычитать месяцы, используя отрицательный amt 
SELECT add_months(date'2015-01-12', -2) m FROM dual;
| M | 
|---|
| 2014-11-12 | 
Когда расчетный месяц имеет меньше дней в качестве заданной даты, будет возвращен последний день расчетного месяца.
SELECT to_char( add_months(date'2015-01-31', 1),'YYYY-MM-DD') m FROM dual;
| M | 
|---|
| 2015-02-28 |