Oracle Database
Werken met datums
Zoeken…
Datum rekenen
Oracle ondersteunt DATE
(inclusief tijd tot de dichtstbijzijnde seconde) en TIMESTAMP
(inclusief tijd tot fracties van een seconde) datatypes, die rekenkundig (optellen en aftrekken) native toestaan. Bijvoorbeeld:
Om de volgende dag te krijgen:
select to_char(sysdate + 1, 'YYYY-MM-DD') as tomorrow from dual;
Om de vorige dag te krijgen:
select to_char(sysdate - 1, 'YYYY-MM-DD') as yesterday from dual;
Om 5 dagen toe te voegen aan de huidige datum:
select to_char(sysdate + 5, 'YYYY-MM-DD') as five_days_from_now from dual;
Om 5 uur toe te voegen aan de huidige datum:
select to_char(sysdate + (5/24), 'YYYY-MM-DD HH24:MI:SS') as five_hours_from_now from dual;
Om 10 minuten toe te voegen aan de huidige datum:
select to_char(sysdate + (10/1440), 'YYYY-MM-DD HH24:MI:SS') as ten_mintues_from_now from dual;
Om 7 seconden toe te voegen aan de huidige datum:
select to_char(sysdate + (7/86400), 'YYYY-MM-DD HH24:MI:SS') as seven_seconds_from_now from dual;
Om rijen te selecteren met een hire_date
30 dagen of meer:
select * from emp where hire_date < sysdate - 30;
Om rijen te selecteren waar de kolom laatst last_updated
in het afgelopen uur is:
select * from logfile where last_updated >= sysdate - (1/24);
Oracle biedt ook het ingebouwde gegevenstype INTERVAL
dat een tijdsduur vertegenwoordigt (bijvoorbeeld 1,5 dagen, 36 uur, 2 maanden, enz.). Deze kunnen ook worden gebruikt met rekenen met DATE
en TIMESTAMP
uitdrukkingen. Bijvoorbeeld:
select * from logfile where last_updated >= sysdate - interval '1' hour;
Functie Add_months
Syntaxis: add_months(p_date, integer) return date;
Add_months functie voegt amt maanden toe aan p_date datum.
SELECT add_months(date'2015-01-12', 2) m FROM dual;
M |
---|
2015/03/12 |
U kunt ook maanden aftrekken met een negatieve amt
SELECT add_months(date'2015-01-12', -2) m FROM dual;
M |
---|
2014/11/12 |
Wanneer de berekende maand minder dagen als opgegeven datum heeft, wordt de laatste dag van de berekende maand geretourneerd.
SELECT to_char( add_months(date'2015-01-31', 1),'YYYY-MM-DD') m FROM dual;
M |
---|
2015/02/28 |