Tutorial per Oracle DBA
Il Gennaio 1, 2022 da adminFunzioni e operatori di data.
Per vedere la data e l’ora di sistema usate le seguenti funzioni :
CURRENT_DATE :restituisce la data attuale nel fuso orario della sessione, in un valore nel calendario gregoriano di tipo
DATE
SYSDATE :restituisce la data e l’ora attuali.
SYSTIMESTAMP :La funzione SYSTIMESTAMP restituisce la data di sistema, comprese le frazioni di secondo e il fuso orario
del database. Il tipo di ritorno è TIMESTAMP CON FUSO ORARIO.
SYSDATE Esempio
Per vedere la data e l’ora attuale del sistema fai la seguente query.
select sysdate from dual;
SYSDATE
——-
8-AUG-03
Il formato in cui viene visualizzata la data dipende dal parametro NLS_DATE_FORMAT.
Per esempio impostate NLS_DATE_FORMAT nel seguente formato
alterate session set NLS_DATE_FORMAT=’DD-MON-YYYY HH:MIpm’;
Poi date la seguente dichiarazione
select sysdate from dual;
SYSDATE
——————
8-AUG-2003 03:05pm
L’impostazione predefinita di NLS_DATE_FORMAT è DD-MON-YY
CURRENT_DATE Esempio
Per vedere la data e l’ora corrente del sistema con il fuso orario usa la funzione CURRENT_DATE
ALTER SESSION SET TIME_ZONE = ‘-4:0’;
ALTERARE SESSIONE SET NLS_DATE_FORMAT = ‘DD-MON-YYYY HH24:MI:SS’;
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMEZONE CURRENT_DATE
————— ——————–
-04:00 22-APR-2003 14:15:03
ALTER SESSION SET TIME_ZONE = ‘-7:0’;
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMEZONE CURRENT_DATE
————— ——————–
-07:00 22-APR-2003 09:15:33
SYSTIMESTAMP Esempio
Per vedere la data e l’ora attuale del sistema con frazioni di secondo con fuso orario dare la seguente istruzione
select systimestamp from dual;
SYSTIMESTAMP
——————————-
22-APR-03 08.38.55.538741 AM -07:00
MODELLI FORMATO DATA
Per tradurre la data in una stringa di formato diverso puoi usare la funzione TO_CHAR con formato data. Per esempio per vedere il giorno corrente potete dare la seguente query
Select to_char(sysdate,’DAY’) “Today” FROM DUAL;
TODAY
——-
THURSDAY
Per tradurre un valore di carattere, che è in un formato diverso da quello predefinito di data, in un valore di data è possibile utilizzare la funzione TO_DATE con il formato di data in data
Come questo modello di formato “DAY” ci sono molti altri modelli di formato di data disponibili in Oracle. La seguente tabella elenca i modelli di formato data.
FORMATO |
MODELLO |
D |
Giorno della settimana |
DD |
Giorno del mese |
DDD |
Giorno dell’anno |
DAY |
Giorno intero per es. Lunedì’, ‘Martedì’, ‘Mercoledì’ |
DY |
Giorno in tre lettere per es. ‘MON’, ‘TUE’,’VEN’ |
W |
Settimana del mese |
W |
Settimana dell’anno |
MM |
Mese in due cifre (1-Gennaio, 2-feb,…12-Dic) |
MON |
Mese in tre caratteri come “Jan”, “Feb”, “Apr” |
MONTH |
Mese completo come “January”, “Febbraio”, “Aprile” |
RM |
Mese in caratteri romani (I-XII, I-Jan, II-Feb,…XII-Dic) |
Q |
Quarto del mese |
YY |
Le ultime due cifre dell’anno. |
YYYYY |
Anno intero |
ANNO |
Anno in parole come “Nineteen Ninety Nine” |
HH |
Ore in formato 12 ore |
HH12 |
Ore in formato 12 ore |
HH24 |
Ore in formato 24 ore |
MI |
Minuti |
SS |
Secondi |
FF |
Frazione di secondi |
SSSSS |
Millisecondi |
J |
Giorno Giuliano i.e Giorni dal 1 gennaio-4712BC a oggi |
RR |
Se l’anno è inferiore a 50 si assume l’anno come 21° secolo. Se l’anno è maggiore di 50 allora assume l’anno nel 20° secolo. |
suffissi
TH |
Riporta th, st, rd o nd secondo il numero principale come 1st , 2nd 3rd 4th |
SP |
Spiega il numero principale |
AM o PM |
Riporta AM o PM secondo l’ora |
SPTH |
Riporta il numero ordinale sillabato. Per. Esempio Primo, Quarto |
Per esempio per vedere la data di oggi nel seguente formato
Venerdì, 7 marzo, 2014
Dare la seguente istruzione
select to_char(sysdate,’Day, ddth Month, yyyy’) “Today” da dual;
TODAY
————————
Venerdì, 7 marzo, 2014
Per esempio vuoi vedere le date di assunzione di tutti gli impiegati nel seguente formato
Venerdì, 8 agosto, 2003
Allora fai la seguente query.
select to_char(hire_date,’Day, ddth Month, yyyy’) from emp;
TO_DATE Esempio
La funzioneTo_Date è usata per convertire stringhe in valori di data. Per esempio volete vedere che giorno era il 15-aug-1947. Si usa la funzione to_date per convertire prima la stringa in valore di data e poi si passa questo valore alla funzione to_char per estrarre il giorno.
select to_char(to_date(’15-aug-1947′,’dd-mon-yyyy’),’Day’)
da dual;
TO_CHAR(
——–
Venerdì
Per vedere quanti giorni sono passati dal 15-aug-1947 dare la seguente query
select sysdate-to_date(’15-aug-1947′,’dd-mon-yyyy’) from dual;
Ora vogliamo vedere quale data si verificherà dopo 45 giorni da ora
select sysdate+45 from dual;
SYSDATE
——-
06-JUN-2003
ADD_MONTHS
Per vedere quale data si verificherà dopo 6 mesi da ora, possiamo usare la funzione ADD_MONTHS
Seleziona ADD_MONTHS(SYSDATE,6) da dual;
ADD_MONTHS
———-
22-OCT-2003
MONTHS_BETWEEN
Per vedere quanti mesi sono passati da una data particolare, usate la funzione MONTHS_BETWEEN.
Per esempio, per vedere quanti mesi sono passati dal 15-aug-1947, date la seguente query.
select months_between(sysdate,to_date(’15-aug-1947′))
from dual;
Months
——
616.553
Per eliminare il valore decimale usare la funzione truncate
select trunc(months_between(sysdate,to_date(’15-aug-1947′)))
from dual;
Months
——
616
LAST_DAY
Per vedere l’ultima data del mese di una data data, usa la funzione LAST_DAY.
select LAST_DAY(sysdate) from dual;
LAST_DAY
——–
31-AUG-2003
NEXT_DAY
Per vedere quando un particolare giorno è prossimo, usate la funzione NEXT_DAY.
Per esempio, per vedere quando arriva il prossimo sabato, fate la seguente query
select next_day(sysdate) from dual;
NEXT_DAY
———–
09-AUG-2003
EXTRACT
Una funzione EXTRACT datetime estrae e restituisce il valore di un campo datetime specificato da un’espressione datetime o di valore di intervallo. Quando si estrae una TIMEZONE_REGION o TIMEZONE_ABBR (abbreviazione), il valore restituito è una stringa contenente il nome o l’abbreviazione del fuso orario appropriato
La sintassi della funzione EXTRACT è
EXTRACT ( YEAR / MONTH / WEEK / DAY / HOUR / MINUTE / TIMEZONE FROM DATE)
Esempio
Il seguente esempio dimostra l’uso della funzione EXTRACT per estrarre l’anno dalla data corrente.
select extract(year from sysdate) from dual;
EXTRACT
——-
2003
Lascia un commento