Ao formatar datas no Oracle Database, temos a opção de usar
RR e YY para retornar um ano de dois dígitos. Esses dois elementos de formato são semelhantes. A diferença está em como eles interpretam anos de dois dígitos.
Também temos a opção de usar
RRRR e YYYY ao retornar anos de quatro dígitos. Exemplo
Aqui está um exemplo que compara o
RR e YY elementos de formato: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; Resultado:
RR YY _______ _______ 1981 2081
Podemos ver que
RR interpreta o ano 81 como 1981, enquanto YY interpreta como 2081. - Ao usar
YY, o ano retornado sempre tem os mesmos 2 primeiros dígitos do ano atual. - Com
RR, o século do valor de retorno varia de acordo com o ano de dois dígitos especificado e os dois últimos dígitos do ano atual.
Veja como a documentação do Oracle explica:
- Se o ano de dois dígitos especificado for de 00 a 49, então
- Se os dois últimos dígitos do ano atual forem de 00 a 49, o ano retornado terá os mesmos dois primeiros dígitos do ano atual.
- Se os dois últimos dígitos do ano atual forem de 50 a 99, os dois primeiros dígitos do ano retornado serão um a mais que os dois primeiros dígitos do ano atual.
- Se o ano de dois dígitos especificado for de 50 a 99, então
- Se os dois últimos dígitos do ano atual forem de 00 a 49, os dois primeiros dígitos do ano retornado serão um a menos que os dois primeiros dígitos do ano atual.
- Se os dois últimos dígitos do ano atual forem de 50 a 99, o ano retornado terá os mesmos dois primeiros dígitos do ano atual.
O RRRR e YYYY Elementos de formato
Aqui está um exemplo que compara o
RRRR e YYYY elementos de formato: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; Resultado:
RRRR YYYY _______ _______ 1981 0081
Neste caso,
RRRR retorna o mesmo ano em que RR fez, mas YYYY retorna o ano 0081. Os exemplos acima assumem que você sabe como
TO_CHAR() e TO_DATE() trabalhar. Veja Oracle TO_CHAR(datetime) Função e Oracle TO_DATE() Função no Oracle para mais informações.