Sunteți pe pagina 1din 5

Funcii de conversie Oracle ofer un set bogat de funcii care v permit s transformai o valoare dintr-un tip de dat n altul.

Transformarea din dat calendaristic n ir de caractere Transformarea unei date calendaristice n ir de caractere se poate realiza cu ajutorul funciei TO_CHAR. Aceast operaie se poate dovedi util atunci cnd dorim obinerea unor rapoarte cu un format precis. inta!a acestei funcii 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%. &ormatul poate conine mai muli parametrii care pot afecta modul n care va arta irul returnat. 'iva din aceti parametrii sunt prezentai n continuare. Aspect ecolul Trimestrul Anul Parametru CC Q YYYY$ RRRR YY$ RR Y YEAR$ Y$ar *una MM MONTH$ Mo,t) MON$ Mo, RM ptmna WW W ,iua DDD DD D DAY$ Da0 DY$ D0 Ora HH22 HH Descriere ecolul cu dou cifre Trimestrul din an n care se gsete data Anul cu patru cifre. (ltimele dou cifre din an. (ltima cifr din an )umele anului *una cu dou cifre )umele complet al lunii. +rimele trei litere ale denumirii lunii. *una scris cu cifre romane. )umrul sptmnii din an. (ltima cifr a numrului sptmnii din an. )umrul zilei din cadrul anului. )umrul zilei n cadrul lunii )umrul zilei n cadrul sptmnii. )umele complet al zilei din sptmn +rescurtarea denumirii zilei din sptmn. Ora n formatul cu 22 de ore. Ora n formatul cu 2 ore. ! 1 SAT%RDAY, Sat*rda0 SAT$ Sat 2! 2 ! 2""# "# # TWO THO%SAND&SI', T(o T)o*+a,d&S-. "2 /AN%ARY$ /a,*ar0 /AN, /a, IV !1 2 "! Examplu

Aspect -inutele ecundele ufi!e

Parametru MI SS AM sau PM A4M4 sau P4M4 TH SP

Descriere -inutele cu dou cifre ecundele cu dou cifre AM sau PM dup cum e cazul. A4M4 sau P4M4 dup cum e cazul. ufi! pentru numerale #t) sau ,d sau +t% )umerele sunt scrise n cuvinte. 13 21 AM P4M4

Examplu

.n cadrul formatului se pot folosi oricare dintre urmtorii separatori & 5 , 4 6 7 /ac n irul returnat dorim s includem i anumite te!te acestea se vor include ntre g0ilimele. 1at n continuare i cteva e!emple de folosire a acestei funcii. Exemplu Rezultatul afiat +$8$9t +0+dat$, 2;&<E=&"3 to_9)ar(+0+dat$,:MONTH DD, <E=R%ARY 2;, 2""3 YYYY:) <$>r*ar0 2;, 2""3 to_9)ar(+0+dat$,:Mo,t) DD, <$> 2;, 2""3 YYYY:) to_9)ar(+0+dat$,:Mo, DD, YYYY:) from d*a8 +$8$9t Tr-m$+tr*8 a8 to_9)ar(+0+dat$,:?Tr-m$+tr*8 ?@ a,*8*- T(o T)o*+a,d ?a8 a,*8*- ? Y$ar:) S$A$, from d*a8 +$8$9t S$9o8*8 2 to_9)ar(+0+dat$,:?S$9o8*8 ?CC:) from d*a8 +$8$9t W$d,$+da0, to_9)ar(+0+dat$,:Da0, 2;4II42""3 dd4RM4YYYY:) from d*a8 +$8$9t W$d, 2, 2;, "1B to_9)ar(+0+dat$,:D0, D, DD, DDD:) from d*a8 +$8$9t 2 71!5"B71! PM to_9)ar(+0+dat$,:HH227MI5HH7MI AM:) from d*a8 +$8$9t to_9)ar(+0+dat$C ,:ddt):) " +t from d*a8 +$8$9t f-r+t to_9)ar(+0+dat$C ,:dd+Dt):) from d*a8 +$8$9t S$9o,d to_9)ar(+0+dat$C2,:Dd+Dt):) from d*a8 +$8$9t TENTH to_9)ar(+0+dat$C ",:DD+Dt):) from d*a8

Exemplu +$8$9t to_9)ar(+0+dat$,:mm+D:) from d*a8

Rezultatul afiat t(o

Transformarea din ir de caractere n dat calendaristic &olosind funcia TO_DATE se poate transforma un ir de caractere precum :Ma0 2#, 2""#: ntr-o dat calendaristic. inta!a funciei este" TO_DATE(+-r,format) &ormatul nu este obligatoriu$ ns dac nu este precizat$ irul trebuie s respecte formatul implicit al datei calendaristice DD&MON&YYYY sau DD&MON&YY. &ormatul poate folosi aceiai parametrii de format ca i funcia TO_CHAR. Exemplu Rezultatul afiat +$8$9t "2&/%L&"3 to_dat$(:3424"3:, :MM4DD4YY:) from d*a86 +$8$9t " &/AN&" to_dat$(:" " " :,:ddmm00:) from d*a8 Formatul RR i formatul YY Aa cum s-a precizat anterior n formatarea unei date calendaristice se pot folosi pentru an att YY #respectiv YYYY% ct i RR #respectiv RRRR%. /iferena dintre aceste dou formate este modul n care ele interpreteaz anii aparinnd de secole diferite. Oracle memoreaz toate cele patru cifre ale unui an$ dar dac sunt transmise doar dou din aceste cifre$ Oracle va interpreta secolul diferit n cazul celor dou formate. 2om ncepe printr-un e!emplu" +$8$9t to_9)ar(to_dat$(:"1&<E=&B1:,:DD&MON&YY:), :DD&MON&YYYY:) a+ ?YY <ormat?, to_9)ar(to_dat$(:"1&<E=&B1:,:DD&MON&RR:), :DD&MON&RRRR:) a+ ?RR <ormat? from d*a8 YY Format RR Format 34-&56-7384 34-&56-9884 &ormatele YY i RR e observ modul diferit de interpretare a anului. Dac utilizai formatul YY i anul este specificat doar prin dou cifre, se presupune c anul respecti face parte din acelai secol cu anul curent . /e e!emplu$ dac anul transmis este 1 iar anul curent este 2""3$ atunci anul transmis este interpretat cu 2" 1. /e asemenea 31 interpretat ca 2"31. +$8$9t to_9)ar(to_dat$(: 1:,:00:),:0000:), to_9)ar(to_dat$(:31:,:00:),:0000:) from d*a8 !"#C$AR%!"#DA!E%&'(&,&YY&),&YYYY&) !"#C$AR%!"#DA!E%&*(&,&YY&),&YYYY&) 7394 73:4 &ormatul YY

/ac folosii formatul RR i anul transmis este de dou cifre$ primele dou cifre ale anului transmis este determinat n funcie de cele dou cifre transmise i de ultimele dou cifre ale anului curent. ;egulile dup care se determin secolul datei transmise sunt urmtoarele" Re+ula ', /ac anul transmis este ntre "" i 2B$ i ultimele dou cifre ale anului curent sunt ntre "" i 2B atunci secolul este acelai cu secolul anului curent. /e e!emplu dac anul transmis este 1 iar anul curent este 2""3$ anul transmis este interpretat ca fiind 2" 1. Re+ula -, /ac anul transmis este ntre 1" i BB iar anul curent este ntre "" i 2B atunci secolul este secolul prezent minus . /e e!emplu dac transmitei 31 iar anul curent este 2""3$ anul transmis este interpretat ca fiind B31. Re+ula ., /ac anul transmis este ntre "" and 2B iar anul prezent este ntre 1" i BB$ secolul este considerat secolul prezent plus 9. /e e!emplu dac ai transmis anul 1 iar anul curent este B;3$ anul transmis este considerat ca fiind anul 2" 1. Re+ula /, /ac anul transmis este ntre 1" i BB$ iar anul curent este ntre 1" i BB$ secolul este acelai cu a anului curent. /e e!emplu$ dac transmitei anul 11 iar anul prezent ar fi B;3$ atunci anul transmis este considerat ca fiind anul B11. +$8$9t to_9)ar(to_dat$(:"2&/%L& 1:,:DD&MON&RR:), :DD&MON&YYYY:) a+ dt , to_9)ar(to_dat$(:"2&/%L&31:,:DD&MON&RR:), :DD&MON&YYYY:) a+ dt2 from d*a8 D!' D!3<-=(*-7394 3<-=(*-98:4 &ormatul RR Transformarea din numr n ir de caractere +entru a transforma un numr ntr-un ir de caractere$ se folosete funcia TO_CHAR$ cu urmtoarea sinta!" TO_CHAR(,*mar,format) &ormatul poate conine unul sau mai muli parametrii de formatare dintre cei prezentai n tabelul urmtor. Parametru Exemplu de format Descriere B BBB ;eturneaz cifrele numrului din poziiile specificate$ precedat de semnul minus dac numrul este negativ " "BBB 'ompleteaz cifrele numrului cu zerouri n fa 4 , E EEEE L MI PR RN r, V ' BBB4BB B,BBB EBBB B4BBEEEE LBBB BBBMI BBBPR RN r, BBVBB '''' pecific poziia punctului zecimal pecific poziia separatorului virgul Afieaz semnul dolar ;eturneaz scrierea tiinific a numrului. Afieaz simbolul monetar. Afieaz semnul minus dup numr dac acesta este negativ. )umerele negative sunt nc0ise ntre paranteze ung0iulare. Afieaz numrul n cifre romane. Afieaz numrul nmulit cu " la puterea .$ i rotunjit la ultima cifr$ unde . este numrul de cifre B de dup V. Afieaz numrul n baza #..

2om e!emplifica n continuare cteva dintre aceste formate.

Exemplu +$8$9t to_9)ar( 2!421,:BBBB4BB:) from d*a8 +$8$9t to_9)ar( 2!421,:""""4""":) from d*a8 +$8$9t to_9)ar( 2!421,:B4BBEEEE:) from d*a8 +$8$9t to_9)ar(& 2!421,:BBB4BBBPR:) from d*a8 +$8$9t to_9)ar( 42!3!,:BBBBBVBB:) from d*a8 +$8$9t to_9)ar( 42!3!,:L""""4""":) from d*a8 +$8$9t to_9)ar(2B;3,:'''''':) from d*a8 +$8$9t to_9)ar(2B;,:RN:) from d*a8 Transformarea ir de caractere n numr

Rezultatul afiat 2!421 " 2!421" 42!EC"2 F 2!421"G 22 E""" 42!3 !3= CD'CVIII

Transformarea invers din ir de caractere ntr-o valoare numeric se realizeaz cu ajutorul funciei TO_N%M=ER" TO_N%M=ER(+-r,format) +arametrii de formatare ce se pot folosi sunt aceeai ca n cazul funciei TO_CHAR. 1at cteva e!emple. Exemplu Rezultatul afiat +$8$9t to_,*m>$r(:B3"4 !:) C 2141 BB14#! <ROM d*a8 +$8$9t & 2!214#3 to_,*m>$r(:& E 2,!214#3:,:EBB,BBB4BB:) from d*a86

S-ar putea să vă placă și