Oracle Database
Lavorare con le date
Ricerca…
Data Aritmetica
Oracle supporta i tipi di dati DATE
(include il tempo per il secondo più prossimo) e TIMESTAMP
(include il tempo per le frazioni di un secondo), che consentono l'aritmetica (addizione e sottrazione) in modo nativo. Per esempio:
Per ottenere il giorno successivo:
select to_char(sysdate + 1, 'YYYY-MM-DD') as tomorrow from dual;
Per ottenere il giorno precedente:
select to_char(sysdate - 1, 'YYYY-MM-DD') as yesterday from dual;
Per aggiungere 5 giorni alla data corrente:
select to_char(sysdate + 5, 'YYYY-MM-DD') as five_days_from_now from dual;
Per aggiungere 5 ore alla data corrente:
select to_char(sysdate + (5/24), 'YYYY-MM-DD HH24:MI:SS') as five_hours_from_now from dual;
Per aggiungere 10 minuti alla data corrente:
select to_char(sysdate + (10/1440), 'YYYY-MM-DD HH24:MI:SS') as ten_mintues_from_now from dual;
Per aggiungere 7 secondi alla data corrente:
select to_char(sysdate + (7/86400), 'YYYY-MM-DD HH24:MI:SS') as seven_seconds_from_now from dual;
Per selezionare le righe in cui hire_date
sono hire_date
30 giorni o più:
select * from emp where hire_date < sysdate - 30;
Per selezionare le righe in cui la colonna last_updated
trova nell'ultima ora:
select * from logfile where last_updated >= sysdate - (1/24);
Oracle fornisce anche il tipo di dati INTERVAL
incorporato che rappresenta un periodo di tempo (ad es. 1,5 giorni, 36 ore, 2 mesi, ecc.). Questi possono anche essere usati con l'aritmetica con le espressioni DATE
e TIMESTAMP
. Per esempio:
select * from logfile where last_updated >= sysdate - interval '1' hour;
Funzione Add_months
Sintassi: add_months(p_date, integer) return date;
La funzione Add_months aggiunge amt mesi alla data p_date.
SELECT add_months(date'2015-01-12', 2) m FROM dual;
M |
---|
2015/03/12 |
Puoi anche sottrarre mesi usando un amt
negativo
SELECT add_months(date'2015-01-12', -2) m FROM dual;
M |
---|
2014/11/12 |
Quando il mese calcolato ha meno giorni della data indicata, verrà restituito l'ultimo giorno del mese calcolato.
SELECT to_char( add_months(date'2015-01-31', 1),'YYYY-MM-DD') m FROM dual;
M |
---|
2015/02/28 |