sql >> Database teknologi >  >> RDS >> Oracle

RR vs YY i Oracle

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

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.


  1. Brug af SQLCipher med Android

  2. Sådan finder og maskerer du PII i Elasticsearch

  3. Returner en procentdel af et resultatsæt i SQL Server

  4. Sådan undslipper du enkelt citat, specielle tegn i MySQL