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.