Funzioni sulle date
ADD_MONTHS
La funzione restituisce la data fornita come parametro di input a cui vengono aggiunti n mesi.
Sintassi di ADD_MONTHS
ADD_MONTHS (<d>, <n>)
Dove d è la data a cui aggiungere gli n mesi. Se n è un numero negativo allora alla data saranno sottratti n mesi.
Esempio: aggiungere 5 e 13 mesi alla data odierna, poi sottraiamo 4 mesi
SQL> SELECT SYSDATE, ADD_MONTHS (SYSDATE, 5) Add5, 2 ADD_MONTHS (SYSDATE, 13) Add13, 3 ADD_MONTHS (SYSDATE, -4) Less4 FROM DUAL;
LAST_DAY
La funzione restituisce l'ultimo giorno del mese per la data fornita come parametro di input.
Sintassi di LAST_DAY
LAST_DAY (<data>)
Esempio: visualizzare l'ultimo giorno del mese per la data corrente
SQL> SELECT SYSDATE, LAST_DAY(SYSDATE) AS Last FROM DUAL;
MONTHS_BETWEEN
La funzione restituisce la differenza, espressa in mesi, fra le due date fornite come parametri di input.
Sintassi di MONTHS_BETWEEN
MONTHS_BETWEEN (<data1>, <data2>)
Esempio
SQL> SELECT MONTHS_BETWEEN ('22-Mar-2006', '22-Ago-2005') Prova01, 2 MONTHS_BETWEEN ('22-Mar-2006', '22-Gen-2006') Prova02 FROM DUAL;
SYSDATE
La funzione non ha alcun parametro di input e restituisce la data attuale del server Oracle nel formato specificato dal parametro NLS_DATE_FORMAT
(viene definito nel file di inizializzazione dei parametri).
Per esempio mostriamo inizialmente la data odierna nel formato standard del parametro NLS_DATE_FORMAT
, ovvero giorno-mese in lettere-anno a quattro cifre
SQL> SELECT SYSDATE FROM DUAL;
Successivamente modifichiamo il parametro NLS_DATE_FORMAT
per visualizzare, oltre alla data, anche l'ora, i minuti e i secondi. La modifica apportata ha validità solo per la sessione corrente, pertanto alla disconnessione dell'utente o per le eventuali sessioni contemporanee degli altri utenti collegati al medesimo database, il parametro NLS_DATE_FORMAT
assume il suo formato standard.
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-Mon-YYYY HH24:MI:SS'; SQL> SELECT SYSDATE FROM DUAL;
Funzioni di conversione
TO_DATE
La funzione restituisce, nel datatype DATE
, la stringa passata come parametro di input.
Sintassi di TO_DATE
TO_DATE (<data stringa>, <formato>)
La stringa che rappresenta la data viene espressa nel formato indicato dal secondo parametro.
Esempio: inserire una riga nella tabella "Padre"
SQL> INSERT INTO Padre VALUES (2, 'Rominelli Giacomo', 2 TO_DATE ('31-Dic-1964', 'DD-Mon-YYYY'));
NUMTODSINTERVAL
La funzione ha due parametri di input: il primo è un valore numerico mentre il secondo è una stringa che rappresenta il formato associato al primo parametro. La funzione converte il valore numerico in un datatype INTERVAL DAY TO SECOND
. Il formato specificato può essere: 'DAY'
, 'HOUR'
, 'MINUTE'
, 'SECOND'
.
Per esempio modifichiamo il parametro NLS_DATE_FORMAT
per la sessione corrente, quindi eseguiamo alcune prove aggiungendo ore e giorni alla data odierna.
Modifica del formato della data
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-Mon-YYYY HH24:MI:SS';
Aggiungere intervalli di tempo alla data di sistema
SQL> SELECT SYSDATE, SYSDATE + NUMTODSINTERVAL (4, 'HOUR') "4 ore dopo", 2 SYSDATE + NUMTODSINTERVAL (3, 'DAY') "3 giorni dopo" FROM DUAL;
NUMTOYMINTERVAL
La funzione ha due parametri di input: il primo è un valore numerico mentre il secondo è una stringa che rappresenta il formato associato al primo parametro. La funzione converte il valore numerico in un datatype INTERVAL YEAR TO MONTH
. Il formato specificato può essere: 'YEAR'
, 'MONTH'
.
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-Mon-YYYY HH24:MI:SS'; SQL> SELECT SYSDATE, 2 SYSDATE + NUMTOYMINTERVAL (4, 'YEAR') "4 anni dopo", 3 SYSDATE + NUMTOYMINTERVAL (7, 'MONTH') "7 mesi dopo" FROM DUAL;