Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Functii de conversie

sql



+ Font mai mare | - Font mai mic



Functii de conversie

Oracle ofera un set bogat de functii care va permit sa transformati o valoare dintr-un tip de data in altul.

Transformarea din data calendaristica in sir de caractere



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

Transformarea din sir de caractere in data calendaristica

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

Formatul RR si formatul YY

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

Transformarea din numar in sir de caractere

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

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 sir de caractere in numar

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1767
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved