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.