Oracle
 sql >> Base de données >  >> RDS >> Oracle

RR vs YY dans Oracle

Lors du formatage des dates dans Oracle Database, nous avons la possibilité d'utiliser RR et YY pour renvoyer une année à deux chiffres.

Ces deux éléments de format sont similaires. La différence réside dans la façon dont ils interprètent les années à deux chiffres.

Nous avons également la possibilité d'utiliser RRRR et YYYY lors du retour des années à quatre chiffres.

Exemple

Voici un exemple qui compare le RR et YY éléments de format :

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;

Résultat :

     RR      YY 
_______ _______ 
1981    2081   

Nous pouvons voir que RR interprète l'année 81 comme 1981, tandis que YY l'interprète comme 2081.

  • Lorsque vous utilisez YY , l'année renvoyée a toujours les mêmes 2 premiers chiffres que l'année en cours.
  • Avec RR , le siècle de la valeur renvoyée varie en fonction de l'année à deux chiffres spécifiée et des deux derniers chiffres de l'année en cours.

Voici comment la documentation Oracle l'explique :

  • Si l'année à deux chiffres spécifiée est comprise entre 00 et 49, alors
    • Si les deux derniers chiffres de l'année en cours sont compris entre 00 et 49, l'année renvoyée comporte les deux premiers chiffres de l'année en cours.
    • Si les deux derniers chiffres de l'année en cours sont compris entre 50 et 99, les deux premiers chiffres de l'année renvoyée sont supérieurs de 1 aux deux premiers chiffres de l'année en cours.
  • Si l'année à deux chiffres spécifiée est comprise entre 50 et 99, alors
    • Si les deux derniers chiffres de l'année en cours sont compris entre 00 et 49, les 2 premiers chiffres de l'année renvoyée sont inférieurs de 1 aux 2 premiers chiffres de l'année en cours.
    • Si les deux derniers chiffres de l'année en cours sont compris entre 50 et 99, l'année renvoyée a les deux premiers chiffres de l'année en cours.

Le RRRR et YYYY Éléments de format

Voici un exemple qui compare le RRRR et YYYY éléments de format :

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;

Résultat :

   RRRR    YYYY 
_______ _______ 
1981    0081   

Dans ce cas, RRRR renvoie la même année que RR fait, mais YYYY renvoie l'année 0081.

Les exemples ci-dessus supposent que vous savez comment TO_CHAR() et TO_DATE() travail. Voir Oracle TO_CHAR(datetime) Fonction et Oracle TO_DATE() Fonction dans Oracle pour plus d'informations.