Tutorial pentru Oracle DBA
On ianuarie 1, 2022 by adminFuncții și operatori de date.
Pentru a vedea data și ora sistemului folosiți următoarele funcții :
CURRENT_DATE :returnează data curentă în fusul orar al sesiunii, într-o valoare în calendarul gregorian de tip
DATE
SYSDATE :Returnează data și ora curentă.
SYSTIMESTAMP :Funcția SYSTIMESTAMP returnează data sistemului, inclusiv fracțiunile de secundă și fusul orar
din baza de date. Tipul de returnare este TIMESTAMP WITH TIME ZONE.
SYSDATE Exemplu
Pentru a vedea data și ora curentă a sistemului dați următoarea interogare.
select sysdate from dual;
SYSDATE
——-
8-AUG-03
Formul în care este afișată data depinde de parametrul NLS_DATE_FORMAT.
De exemplu, setați NLS_DATE_FORMAT în următorul format
alter session set NLS_DATE_FORMAT=’DD-MON-YYYY HH:MIpm’;
Apoi dați următoarea instrucțiune
select sysdate from dual;
SYSDATE
——————
8-AUG-2003 03:05pm
Setarea implicită a NLS_DATE_FORMAT este DD-MON-YY
CURRENT_DATE Exemplu
Pentru a vedea data și ora curentă a sistemului cu fusul orar folosiți funcția CURRENT_DATE
ALTER SESSION SET TIME_ZONE = ‘-4:0’;
ALTER SESSION 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 Exemplu
Pentru a vedea data și ora curentă a sistemului cu fracțiuni de secundă cu fus orar dați următoarea instrucțiune
select systimestamp from dual;
SYSTIMESTAMP
——————————-
22-APR-03 08.38.55.538741 AM -07:00
MODELE DE FORMAT DE DATA
Pentru a traduce data într-un șir de format diferit puteți utiliza funcția TO_CHAR cu format de dată. De exemplu, pentru a vedea ziua curentă, puteți da următoarea interogare
Select to_char(sysdate,’DAY’) „Today” FROM DUAL;
TODAY
——-
THURSDAY
Pentru a traduce o valoare de caracter, care este în alt format decât formatul de dată implicit, într-o valoare de dată, puteți utiliza funcția TO_DATE cu formatul de dată la dată
Ca acest model de format „DAY” există multe alte modele de format de dată disponibile în Oracle. Tabelul următor enumeră modelele de formate de date.
FORMAT |
SEMNIFICAȚIE |
D |
Ziua săptămânii |
DD |
Ziua lunii |
DDD |
Ziua anului |
Ziua |
|
Ziua |
Ziua întreagă, de ex. „luni”, „marți”, „miercuri” |
Ziua |
Ziua în trei litere de ex. ‘MON’, ‘TUE’,’FRI’ |
W |
Săptămâna lunii |
WW |
|
WW |
Săptămâna anului |
MM |
Luna în două cifre (1-Jan, 2-Feb,…12-Dec) |
MON |
Luna în trei caractere, cum ar fi „Jan”, „Feb”, „Apr” |
MONTH |
Luna completă, cum ar fi „January”, „February”, „April” |
RM |
Luna în caractere romane (I-XII, I-Jan, II-Feb,…XII-Dec) |
Q |
Quartierul lunii |
YY |
Ultimele două cifre ale anului. |
YYYY |
Anul complet |
ANUL |
Anul în cuvinte precum „Nouăsprezece Nouăzeci și nouă” |
HH |
Orele în format de 12 ore |
HH12 |
Orele în format de 12 ore |
HH24 |
Ora în format 24 de ore |
MI |
Minute |
SS |
Secunde |
FF |
Secunde fracționare |
SSSSS |
Milisecunde |
J |
Ziua iuliană i.adică zile de la 1 ianuarie-4712 î.Hr. până în prezent |
RR |
Dacă anul este mai mic de 50, se presupune că anul este secolul XXI. Dacă anul este mai mare de 50 atunci se presupune că anul este în secolul 20. |
sufixe
TH |
Întoarce th, st, rd sau nd în funcție de numărul din față ca 1st , 2nd 3rd 4th |
SP |
Spune numărul principal |
AM sau PM |
Întoarce AM sau PM în funcție de oră |
SPTH |
Întoarce numărul ordinal silabisit. Pentru. Exemplu First, Fourth |
De exemplu, pentru a vedea data de astăzi în următorul format
Vineri, 7 martie, 2014
Dați următoarea instrucțiune
select to_char(sysdate,’Day, ddth Month, yyyy’) „Today” from dual;
TODAY
————————
Vineri, 7 martie, 2014
De exemplu, doriți să vedeți datele de angajare ale tuturor angajaților în următorul format
Vineri, 8 august, 2003
Apoi dați următoarea interogare.
select to_char(hire_date,’Day, ddth Month, yyyy’) from emp;
TO_DATE Exemplu
Funcția
To_Date este utilizată pentru a converti șirurile de caractere în valori de date. De exemplu, doriți să vedeți care a fost ziua din 15-aug-1947. Se utilizează funcția to_date pentru a converti mai întâi șirul de caractere în valoare de dată și apoi se trece această valoare la funcția to_char pentru a extrage ziua.
select to_char(to_date(’15-aug-1947′,’dd-mon-yyyy’),’Day’)
from dual;
TO_CHAR(
——–
Vineri
Pentru a vedea câte zile au trecut de la 15-aug-1947 atunci dați următoarea interogare
select sysdate-to_date(’15-aug-1947′,’dd-mon-yyyy’) from dual;
Acum vrem să vedem ce dată va avea loc după 45 de zile de acum încolo
select sysdate+45 from dual;
SYSDATE
——-
06-JUN-2003
ADD_MONTHS
Pentru a vedea ce dată va avea loc după 6 luni de acum înainte, putem folosi funcția ADD_MONTHS
Select ADD_MONTHS(SYSDATE,6) from dual;
ADD_MONTHS
———-
22-OCT-2003
MONTHS_BETWEEN
Pentru a vedea câte luni au trecut de la o anumită dată, folosiți funcția MONTHS_BETWEEN.
De exemplu, pentru a vedea câte luni au trecut de la 15-aug-1947, dați următoarea interogare.
select months_between(sysdate,to_date(’15-aug-1947′)))
from dual;
Months
——
616.553
Pentru a elimina valoarea zecimală folosiți funcția truncate
select trunc(months_between(sysdate,to_date(’15-aug-1947′))))
from dual;
Luni
——
616
LAST_DAY
Pentru a vedea ultima dată a lunii unei anumite date, utilizați funcția LAST_DAY.
select LAST_DAY(sysdate) from dual;
LAST_DAY
——–
31-AUG-2003
NEXT_DAY
Pentru a vedea când va urma o anumită zi , utilizați funcția NEXT_DAY.
De exemplu, pentru a vedea când vine sâmbăta viitoare, dați următoarea interogare
select next_day(sysdate) from dual;
NEXT_DAY
———–
09-AUG-2003
EXTRACT
O funcție datetime EXTRACT extrage și returnează valoarea unui câmp datetime specificat dintr-o expresie datetime sau valoare de interval. Atunci când extrageți un TIMEZONE_REGION sau TIMEZONE_ABBR (abreviere), valoarea returnată este un șir de caractere care conține numele sau abrevierea corespunzătoare a fusului orar
Sintaxa funcției EXTRACT este
EXTRACT ( YEAR / MONTH / WEEK / DAY / HOUR / MINUTE / TIMEZONE FROM DATE)
Exemplu
În cele ce urmează se demonstrează utilizarea funcției EXTRACT pentru a extrage anul din data curentă.
select extract(year from sysdate) from dual;
EXTRACT
——-
2003
.
Lasă un răspuns