Oracle Database
Arbeta med datum
Sök…
Datum aritmetik
Oracle stöder DATE
(inkluderar tid till närmaste sekund) och TIMESTAMP
(inkluderar tid till bråkdelar av en sekund) datatyper, som tillåter aritmetik (tillägg och subtraktion) nativt. Till exempel:
För att få nästa dag:
select to_char(sysdate + 1, 'YYYY-MM-DD') as tomorrow from dual;
För att få föregående dag:
select to_char(sysdate - 1, 'YYYY-MM-DD') as yesterday from dual;
Så här lägger du till fem dagar till det aktuella datumet:
select to_char(sysdate + 5, 'YYYY-MM-DD') as five_days_from_now from dual;
Så här lägger du till 5 timmar till det aktuella datumet:
select to_char(sysdate + (5/24), 'YYYY-MM-DD HH24:MI:SS') as five_hours_from_now from dual;
Så här lägger du till 10 minuter till det aktuella datumet:
select to_char(sysdate + (10/1440), 'YYYY-MM-DD HH24:MI:SS') as ten_mintues_from_now from dual;
Så här lägger du till 7 sekunder till det aktuella datumet:
select to_char(sysdate + (7/86400), 'YYYY-MM-DD HH24:MI:SS') as seven_seconds_from_now from dual;
hire_date
väljer du rader där hire_date
är 30 dagar sedan eller mer:
select * from emp where hire_date < sysdate - 30;
last_updated
väljer du rader där den last_updated
kolumnen är den senaste timmen:
select * from logfile where last_updated >= sysdate - (1/24);
Oracle tillhandahåller också den inbyggda datatypen INTERVAL
som representerar en tidsperiod (t.ex. 1,5 dagar, 36 timmar, 2 månader osv.). Dessa kan också användas med aritmetik med DATE
och TIMESTAMP
uttryck. Till exempel:
select * from logfile where last_updated >= sysdate - interval '1' hour;
Add_months-funktion
Syntax: add_months(p_date, integer) return date;
Funktionen Add_months lägger till månader till datumet för datumet.
SELECT add_months(date'2015-01-12', 2) m FROM dual;
M |
---|
2015/03/12 |
Du kan också subtrahera månader med en negativ amt
SELECT add_months(date'2015-01-12', -2) m FROM dual;
M |
---|
2014/11/12 |
När den beräknade månaden har färre dagar som det givna datumet kommer den sista dagen i den beräknade månaden att returneras.
SELECT to_char( add_months(date'2015-01-31', 1),'YYYY-MM-DD') m FROM dual;
M |
---|
2015/02/28 |