Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como adicionar o indicador AD/BC a uma data no Oracle


Ao usar o TO_CHAR() função para formatar um valor de data e hora no Oracle Database, você pode adicionar o indicador AD/BC simplesmente adicionando AD ou BC ao seu modelo de formato.

O Oracle exibe o indicador apropriado, dependendo se o valor da data é AD ou BC.

Você pode fornecê-lo em maiúsculas ou minúsculas e com ou sem pontos (por exemplo, AD , A.D. ad , a.d , etc). O Oracle exibirá o indicador conforme especificado.

Exemplo


Segue um exemplo para demonstrar:
SELECT 
    TO_CHAR(date '2030-12-30', 'DD-MM-YYYY AD')
FROM DUAL;

Resultado:
30-12-2030 AD

Nesse caso, a data é AD e, portanto, o resultado tem AD anexado.

AD vs BC


A Oracle calcula se é AD ou BC e exibe o indicador aplicável.

Aqui está o que acontece quando eu mudo a data para um valor BC:
SELECT 
    TO_CHAR(date '-2030-12-30', 'DD-MM-YYYY AD')
FROM DUAL;

Resultado:
30-12-2030 BC

O indicador resultante é BC, mesmo que minha string de formato seja AD .

Maiúsculas x Minúsculas


Alterar o caso do elemento de formato altera o caso do resultado:
SELECT 
    TO_CHAR(date '2030-12-30', 'DD-MM-YYYY AD') AS "Uppercase",
    TO_CHAR(date '2030-12-30', 'DD-MM-YYYY ad') AS "Lowercase",
    TO_CHAR(date '2030-12-30', 'DD-MM-YYYY Ad') AS "Mixed"
FROM DUAL;

Resultado:
       Uppercase        Lowercase            Mixed 
________________ ________________ ________________ 
30-12-2030 AD    30-12-2030 ad    30-12-2030 Ad   

Pontos x Sem Pontos


Você pode incluir pontos se preferir:
SELECT 
    TO_CHAR(date '2030-12-30', 'DD-MM-YYYY A.D.') AS "Uppercase",
    TO_CHAR(date '2030-12-30', 'DD-MM-YYYY a.d.') AS "Lowercase",
    TO_CHAR(date '2030-12-30', 'DD-MM-YYYY A.d.') AS "Mixed"
FROM DUAL;

Resultado:
         Uppercase          Lowercase              Mixed 
__________________ __________________ __________________ 
30-12-2030 A.D.    30-12-2030 a.d.    30-12-2030 A.D.    

Embora, observe que isso afetou o indicador de maiúsculas e minúsculas.

Data e hora de hoje


Aqui, passo SYSDATE para usar a data atual:
SELECT 
    TO_CHAR(SYSDATE, 'DD-MM-YYYY A.D.')
FROM DUAL;

Resultado:
29-08-2021 A.D.