Oracle
 sql >> Datenbank >  >> RDS >> Oracle

RR gegen YY in Oracle

Beim Formatieren von Datumsangaben in Oracle Database haben wir die Möglichkeit, RR zu verwenden und YY um ein zweistelliges Jahr zurückzugeben.

Diese beiden Formatelemente sind ähnlich. Der Unterschied besteht darin, wie sie zweistellige Jahreszahlen interpretieren.

Wir haben auch die Möglichkeit, RRRR zu verwenden und YYYY bei der Rückgabe von vierstelligen Jahreszahlen.

Beispiel

Hier ist ein Beispiel, das den RR vergleicht und YY Formatelemente:

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;

Ergebnis:

     RR      YY 
_______ _______ 
1981    2081   

Wir können diesen RR sehen interpretiert das Jahr 81 als 1981, während YY interpretiert es als 2081.

  • Bei Verwendung von YY , hat das zurückgegebene Jahr immer die gleichen ersten 2 Ziffern wie das aktuelle Jahr.
  • Mit RR , variiert das Jahrhundert des Rückgabewerts entsprechend der angegebenen zweistelligen Jahreszahl und den letzten beiden Ziffern des aktuellen Jahres.

So erklärt es die Oracle-Dokumentation:

  • Wenn das angegebene zweistellige Jahr 00 bis 49 ist, dann
    • Wenn die letzten beiden Ziffern des aktuellen Jahres 00 bis 49 sind, hat das zurückgegebene Jahr dieselben ersten beiden Ziffern wie das aktuelle Jahr.
    • Wenn die letzten beiden Ziffern des aktuellen Jahres 50 bis 99 sind, dann sind die ersten 2 Ziffern des zurückgegebenen Jahres um 1 größer als die ersten 2 Ziffern des aktuellen Jahres.
  • Wenn die angegebene zweistellige Jahreszahl 50 bis 99 ist, dann
    • Wenn die letzten beiden Ziffern des aktuellen Jahres 00 bis 49 sind, dann sind die ersten 2 Ziffern des zurückgegebenen Jahres um 1 kleiner als die ersten 2 Ziffern des aktuellen Jahres.
    • Wenn die letzten beiden Ziffern des aktuellen Jahres 50 bis 99 sind, hat das zurückgegebene Jahr dieselben ersten beiden Ziffern wie das aktuelle Jahr.

Der RRRR und YYYY Formatelemente

Hier ist ein Beispiel, das den RRRR vergleicht und YYYY Formatelemente:

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;

Ergebnis:

   RRRR    YYYY 
_______ _______ 
1981    0081   

In diesem Fall RRRR gibt dasselbe Jahr zurück wie RR tat, aber YYYY gibt das Jahr 0081 zurück.

Die obigen Beispiele setzen voraus, dass Sie wissen, wie TO_CHAR() funktioniert und TO_DATE() Arbeit. Siehe Oracle TO_CHAR(datetime) Funktion und Oracle TO_DATE() Funktion in Oracle für weitere Informationen.