Når du formaterer datoer i Oracle Database, har vi mulighed for at bruge RR og YY at returnere et tocifret årstal.
Disse to formatelementer ligner hinanden. Forskellen ligger i, hvordan de fortolker to-cifrede årstal.
Vi har også mulighed for at bruge RRRR og ÅÅÅÅ ved returnering af firecifrede årstal.
Eksempel
Her er et eksempel, der sammenligner RR og YY formatelementer:
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 den RR fortolker året 81 som 1981, mens YY tolker det som 2081.
- Når du bruger
YY, har det returnerede år altid de samme første 2 cifre som det aktuelle årstal. - Med
RR, århundredet for returværdien varierer i henhold til det angivne tocifrede årstal og de sidste to cifre i det aktuelle år.
Sådan forklarer Oracle-dokumentationen det:
- Hvis det angivne tocifrede årstal er 00 til 49, så
- Hvis de sidste to cifre i det aktuelle år er 00 til 49, har det returnerede år de samme første to cifre som det aktuelle år.
- Hvis de sidste to cifre i det aktuelle år er 50 til 99, så er de første 2 cifre i det returnerede år 1 større end de første 2 cifre i det aktuelle år.
- Hvis det angivne tocifrede årstal er 50 til 99, så
- Hvis de sidste to cifre i det aktuelle år er 00 til 49, så er de første 2 cifre i det returnerede år 1 mindre end de første 2 cifre i det aktuelle år.
- Hvis de sidste to cifre i det aktuelle år er 50 til 99, så har det returnerede år de samme første to cifre som det aktuelle år.
RRRR og ÅÅÅÅ Formater elementer
ÅÅÅÅ Formater elementer
Her er et eksempel, der sammenligner RRRR og ÅÅÅÅ formatelementer:
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 dette tilfælde RRRR returnerer samme år som RR gjorde, men ÅÅÅÅ returnerer året 0081.
Ovenstående eksempler forudsætter, at du ved hvordan TO_CHAR() og TO_DATE() arbejde. Se Oracle TO_CHAR(datotid) Funktion og Oracle TO_DATE() Funktion i Oracle for mere info.