När vi formaterar datum i Oracle Database har vi möjlighet att använda RR
och YY
för att returnera ett tvåsiffrigt årtal.
Dessa två formatelement liknar varandra. Skillnaden ligger i hur de tolkar tvåsiffriga årtal.
Vi har också möjlighet att använda RRRR
och YYYY
när du returnerar fyrsiffriga årtal.
Exempel
Här är ett exempel som jämför RR
och YY
formatelement:
SELECT
TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-RR'), 'YYYY') AS "RR",
TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-YY'), 'YYYY') AS "YY"
FROM DUAL;
Resultat:
RR YY _______ _______ 1981 2081
Vi kan se att RR
tolkar år 81 som 1981, medan YY
tolkar det som 2081.
- När du använder
YY
, har det returnerade året alltid samma första två siffror som det aktuella året. - Med
RR
, århundradet för returvärdet varierar beroende på det angivna tvåsiffriga året och de två sista siffrorna i det aktuella året.
Så här förklarar Oracle-dokumentationen det:
- Om det angivna tvåsiffriga året är 00 till 49, då
- Om de två sista siffrorna i innevarande år är 00 till 49, har det returnerade året samma första två siffror som innevarande år.
- Om de två sista siffrorna i det aktuella året är 50 till 99, är de två första siffrorna i det returnerade året 1 större än de två första siffrorna i det aktuella året.
- Om det angivna tvåsiffriga året är 50 till 99,
- Om de två sista siffrorna i det aktuella året är 00 till 49, är de två första siffrorna i det returnerade året 1 mindre än de två första siffrorna i det aktuella året.
- Om de två sista siffrorna i innevarande år är 50 till 99, har det returnerade året samma första två siffror som innevarande år.
RRRR
och YYYY
Formatera element
Här är ett exempel som jämför RRRR
och YYYY
formatelement:
SELECT
TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-RRRR'), 'YYYY') AS "RRRR",
TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-YYYY'), 'YYYY') AS "YYYY"
FROM DUAL;
Resultat:
RRRR YYYY _______ _______ 1981 0081
I det här fallet, RRRR
returnerar samma år som RR
gjorde, men YYYY
returnerar år 0081.
Exemplen ovan förutsätter att du vet hur TO_CHAR()
och TO_DATE()
arbete. Se Oracle TO_CHAR(datetime)
Funktion och Oracle TO_DATE()
Funktion i Oracle för mer information.