Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 27 di 41
  • livello principiante
Indice lezioni

Date e conversioni

Come gestire le date, calcolare intervalli e convertire i tipi di dati
Come gestire le date, calcolare intervalli e convertire i tipi di dati
Link copiato negli appunti

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;
Risultato della query

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;
Risultato della query

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;
Risultato della query

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;
Risultato della query

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;
Risultato della query

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;
Risultato della query

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;
Risultato della query

Ti consigliamo anche