Oracle Database                
            Praca z datami
        
        
            
    Szukaj…
Data Arytmetyka
 Oracle obsługuje typy danych DATE (obejmuje czas do najbliższej sekundy) i TIMESTAMP (obejmuje czas do ułamków sekundy), które umożliwiają natywne obliczanie (dodawanie i odejmowanie). Na przykład: 
Aby uzyskać następny dzień:
select to_char(sysdate + 1, 'YYYY-MM-DD') as tomorrow from dual;
Aby uzyskać poprzedni dzień:
select to_char(sysdate - 1, 'YYYY-MM-DD') as yesterday from dual;
Aby dodać 5 dni do bieżącej daty:
select to_char(sysdate + 5, 'YYYY-MM-DD') as five_days_from_now from dual;
Aby dodać 5 godzin do bieżącej daty:
select to_char(sysdate + (5/24), 'YYYY-MM-DD HH24:MI:SS') as five_hours_from_now from dual;
Aby dodać 10 minut do bieżącej daty:
select to_char(sysdate + (10/1440), 'YYYY-MM-DD HH24:MI:SS') as ten_mintues_from_now from dual;
Aby dodać 7 sekund do bieżącej daty:
select to_char(sysdate + (7/86400), 'YYYY-MM-DD HH24:MI:SS') as seven_seconds_from_now from dual;
 Aby wybrać wiersze, w których hire_date jest 30 dni temu lub więcej: 
select * from emp where hire_date < sysdate - 30;
 Aby wybrać wiersze, w których last_updated znajduje się w ostatniej godzinie: 
select * from logfile where last_updated >= sysdate - (1/24);
 Oracle zapewnia również wbudowany typ danych INTERVAL który reprezentuje czas (np. 1,5 dnia, 36 godzin, 2 miesiące itp.). Można ich również używać z arytmetyką z wyrażeniami DATE i TIMESTAMP . Na przykład: 
select * from logfile where last_updated >= sysdate - interval '1' hour;
Funkcja Add_months
 Składnia: add_months(p_date, integer) return date; 
Funkcja Add_months dodaje miesiące do daty p_date.
SELECT add_months(date'2015-01-12', 2) m FROM dual;
| M. | 
|---|
| 2015-03-12 | 
 Możesz także odjąć miesiące używając ujemnego amt 
SELECT add_months(date'2015-01-12', -2) m FROM dual;
| M. | 
|---|
| 2014-11-12 | 
Gdy w obliczonym miesiącu jest mniej dni niż podana data, zwracany jest ostatni dzień obliczonego miesiąca.
SELECT to_char( add_months(date'2015-01-31', 1),'YYYY-MM-DD') m FROM dual;
| M. | 
|---|
| 28.02.2015 |