CATEGORII DOCUMENTE |
Oracle ofera un set bogat de functii care va permit sa transformati o valoare dintr-un tip de data in altul.
Transformarea unei date calendaristice in sir de caractere se poate realiza cu ajutorul functiei TO_CHAR. Aceasta operatie se poate dovedi utila atunci cand dorim obtinerea unor rapoarte cu un format precis. Sintaxa acestei functii este:
TO_CHAR (dt, format)
dt poate avea unul din tipurile pentru date calendatistice (DATE TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE INTERVAL MONTH TO YEAR, or INTERVAL DAY TO SECOND). Formatul poate contine mai multi parametrii care pot afecta modul in care va arata sirul returnat. Cativa din acesti parametrii sunt prezentati in continuare.
Aspect |
Parametru |
Descriere |
Examplu |
Secolul |
CC |
Secolul cu doua cifre | |
Trimestrul |
Q |
Trimestrul din an in care se gaseste data | |
Anul |
YYYY RRRR |
Anul cu patru cifre. | |
YY RR |
Ultimele doua cifre din an. | ||
Y |
Ultima cifra din an | ||
YEAR Year |
Numele anului |
TWO THOUSAND-SIX, Two Thousand-Six |
|
Luna |
MM |
Luna cu doua cifre | |
MONTH Month |
Numele complet al lunii. |
JANUARY January |
|
MON Mon |
Primele trei litere ale denumirii lunii. |
JAN, Jan |
|
RM |
Luna scrisa cu cifre romane. |
IV |
|
Saptamana |
WW |
Numarul saptamanii din an. | |
W |
Ultima cifra a numarului saptamanii din an. | ||
Ziua |
DDD |
Numarul zilei din cadrul anului. | |
DD |
Numarul zilei in cadrul lunii | ||
D |
Numarul zilei in cadrul saptamanii. | ||
DAY Day |
Numele complet al zilei din saptamana |
SATURDAY Saturday |
|
DY Dy |
Prescurtarea denumirii zilei din saptamana. |
SAT Sat |
|
Ora |
HH24 |
Ora in formatul cu de ore. | |
HH |
Ora in formatul cu ore. | ||
Minutele |
MI |
Minutele cu doua cifre | |
Secundele |
SS |
Secundele cu doua cifre | |
Sufixe |
AM sau PM |
AM sau PM dupa cum e cazul. |
AM |
A.M. sau P.M. |
A.M. sau P.M. dupa cum e cazul. |
P.M. |
|
TH |
Sufix pentru numerale (th sau nd sau st | ||
SP |
Numerele sunt scrise in cuvinte. |
In cadrul formatului se pot folosi oricare dintre urmatorii separatori
Daca in sirul returnat dorim sa includem si anumite texte acestea se vor include intre ghilimele.
Iata in continuare si cateva exemple de folosire a acestei functii.
Exemplu |
Rezultatul afisat |
select sysdate, to_char(sysdate,'MONTH DD, YYYY') to_char(sysdate,'Month DD, YYYY') to_char(sysdate,'Mon DD, YYYY') from dual |
28-FEB-07 FEBRUARY 28, 2007 February 28, 2007 Feb 28, 2007 |
select to_char(sysdate,''Trimestrul 'Q 'al anului ' Year') from dual |
Trimestrul 1 al anului Two Thousand Seven |
select to_char(sysdate,''Secolul 'CC') from dual |
Secolul 21 |
select to_char(sysdate,'Day, dd.RM.YYYY') from dual |
Wednesday, 28.II.2007 |
select to_char(sysdate,'Dy, D, DD, DDD') from dual |
Wed, 4, 28, 059 |
select to_char(sysdate,'HH24:MI/HH:MI AM') from dual |
21:53/09:53 PM |
select to_char(sysdate+1,'ddth') from dual |
01st |
select to_char(sysdate+1,'ddspth') from dual |
first |
select to_char(sysdate+2,'Ddspth') from dual |
Second |
select to_char(sysdate+10,'DDspth') from dual |
TENTH |
select to_char(sysdate,'mmsp') from dual |
two |
Folosind functia TO_DATE se poate transforma un sir de caractere precum 'May 26, 2006' intr-o data calendaristica. Sintaxa functiei este:
TO_DATE(sir,format)
Formatul nu este obligatoriu, insa daca nu este precizat, sirul trebuie sa respecte formatul implicit al datei calendaristice DD-MON-YYYY sau DD-MON-YY. Formatul poate folosi aceiasi parametrii de format ca si functia TO_CHAR
Exemplu |
Rezultatul afisat |
select to_date('7.4.07', 'MM.DD.YY') from dual; |
04-JUL-07 |
select to_date('010101','ddmmyy') from dual |
01-JAN-01 |
Asa cum s-a precizat anterior in formatarea unei date calendaristice se pot folosi pentru an atat YY (respectiv YYYY) cat si RR (respectiv RRR). Diferenta dintre aceste doua formate este modul in care ele interpreteaza anii apartinand de secole diferite. Oracle memoreaza toate cele patru cifre ale unui an, dar daca sunt transmise doar doua din aceste cifre, Oracle va interpreta secolul diferit in cazul celor doua formate.
Vom incepe printr-un exemplu:
select to_char(to_date('05-FEB-95','DD-MON-YY'),
'DD-MON-YYYY') as 'YY Format',
to_char(to_date('05-FEB-95','DD-MON-RR'),
'DD-MON-RRRR') as 'RR Format'
from dual
YY Format |
RR Format |
05-FEB-2095 |
05-FEB-1995 |
Figura II.2.11. Formatele YY si RR
Se observa modul diferit de interpretare a anului.
Daca utilizati formatul YY si anul este specificat doar prin doua cifre, se presupune ca anul respectiv face parte din acelasi secol cu anul curent. De exemplu, daca anul transmis este iar anul curent este , atunci anul transmis este interpretat cu . De asemenea interpretat ca
select to_char(to_date('15','yy'),'yyyy'),
to_char(to_date('75','yy'),'yyyy')
from dual
TO_CHAR(TO_DATE('15','YY'),'YYYY') |
TO_CHAR(TO_DATE('75','YY'),'YYYY') |
Figura II.2.12. Formatul YY
Daca folositi formatul RR si anul transmis este de doua cifre, primele doua cifre ale anului transmis este determinat in functie de cele doua cifre transmise si de ultimele doua cifre ale anului curent. Regulile dupa care se determina secolul datei transmise sunt urmatoarele:
Regula 1: Daca anul transmis este intre si , si ultimele doua cifre ale anului curent sunt intre si atunci secolul este acelasi cu secolul anului curent. De exemplu daca anul transmis este iar anul curent este , anul transmis este interpretat ca fiind
Regula 2: Daca anul transmis este intre si iar anul curent este intre si atunci secolul este secolul prezent minus . De exemplu daca transmiteti iar anul curent este , anul transmis este interpretat ca fiind
Regula 3: Daca anul transmis este intre and iar anul prezent este intre si , secolul este considerat secolul prezent plus 1. De exemplu daca ati transmis anul iar anul curent este , anul transmis este considerat ca fiind anul
Regula 4: Daca anul transmis este intre si , iar anul curent este intre si , secolul este acelasi cu a anului curent. De exemplu, daca transmiteti anul iar anul prezent ar fi , atunci anul transmis este considerat ca fiind anul
select to_char(to_date('04-JUL-15','DD-MON-RR'),
'DD-MON-YYYY') as dt1,
to_char(to_date('04-JUL-75','DD-MON-RR'),
'DD-MON-YYYY') as dt2
from dual
DT1 |
DT2 |
04-JUL-2015 |
04-JUL-1975 |
Figura II.2.13. Formatul RR
Pentru a transforma un numar intr-un sir de caractere, se foloseste functia TO_CHAR, cu urmatoarea sintaxa:
TO_CHAR(numar,format)
Formatul poate contine unul sau mai multi parametrii de formatare dintre cei prezentati in tabelul urmator.
Parametru |
Exemplu de format |
Descriere |
Returneaza cifrele numarului din pozitiile specificate, precedat de semnul minus daca numarul este negativ |
||
Completeaza cifrele numarului cu zerouri in fata |
||
Specifica pozitia punctului zecimal |
||
Specifica pozitia separatorului virgula |
||
Afiseaza semnul dolar |
||
EEEE |
9.99EEEE |
Returneaza scrierea stiintifica a numarului. |
L |
L999 |
Afiseaza simbolul monetar. |
MI |
999MI |
Afiseaza semnul minus dupa numar daca acesta este negativ. |
PR |
999PR |
Numerele negative sunt inchise intre paranteze unghiulare. |
RN |
RN |
Afiseaza numarul in cifre romane. |
V |
99V99 |
Afiseaza numarul inmultit cu la puterea x, si rotunjit la ultima cifra, unde x este numarul de cifre de dupa V |
X |
XXXX |
Afiseaza numarul in baza |
Vom exemplifica in continuare cateva dintre aceste formate.
Exemplu |
Rezultatul afisat |
select to_char(123.45,'9999.99') from dual | |
select to_char(123.45,'0000.000') from dual | |
select to_char(123.45,'9.99EEEE') from dual |
1.23E+02 |
select to_char(-123.45,'999.999PR') from dual |
<123.450> |
select to_char(1.2373,'99999V99') from dual | |
select to_char(1.2373,'L0000.000') from dual | |
select to_char(4987,'XXXXXX') from dual |
137B |
select to_char(498,'RN') from dual |
CDXCVIII |
Transformarea inversa din sir de caractere intr-o valoare numerica se realizeaza cu ajutorul functiei TO_NUMBER:
TO_NUMBER(sir,format)
Parametrii de formatare ce se pot folosi sunt aceeasi ca in cazul functiei TO_CHAR. Iata cateva exemple.
Exemplu |
Rezultatul afisat |
select to_number('970.13') + 25.5 FROM dual | |
select to_number('-$12,345.67','$99,999.99') from dual; |
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1767
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved