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 |