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

Como formatar o mês em algarismos romanos no Oracle


O Oracle Database nos fornece a capacidade de retornar o mês de uma data usando algarismos romanos.

Por exemplo, se o mês for agosto, seu valor decimal seria 08 e seu equivalente numeral romano seria VIII.

A maneira de fazer isso é usar o RM ou rm elemento de formato em sua máscara de formato. Isso formatará o mês usando algarismos romanos em maiúsculas ou minúsculas, respectivamente.

A especificação do formato de data pode ser feita em vários lugares.

Especificar algarismos romanos ao chamar uma função


Aqui está um exemplo de especificação de numerais romanos ao formatar uma data com o TO_CHAR(datetime) função:
SELECT TO_CHAR(DATE '2035-08-11', 'DD RM YYYY') FROM DUAL;

Resultado:
11 VIII 2035

Neste caso, especifiquei algarismos romanos maiúsculos.

Para especificar letras minúsculas, basta alterar o RM para rm :
SELECT TO_CHAR(DATE '2035-08-11', 'DD rm YYYY') FROM DUAL;

Resultado:
11 viii 2035

Consulte Lista de elementos de formato de data e hora no Oracle para obter uma lista completa de elementos de formato que podem ser usados ​​para formatar valores de data e hora.

Especifique algarismos romanos para toda a sessão


Você também pode definir o formato de data para toda a sua sessão. Isso pode ser útil se você precisar fazer muitas chamadas de função que retornam a data.

Existem três parâmetros relevantes:NLS_DATE_FORMAT , NLS_TIMESTAMP_FORMAT e NLS_TIMESTAMP_TZ_FORMAT .

Esses parâmetros têm valores padrão derivados do NLS_TERRITORY parâmetro (que tem um valor padrão que depende do sistema operacional). No entanto, você pode atualizar qualquer um desses parâmetros para a sessão atual, se necessário.

Aqui está um exemplo de atualização desses parâmetros para usar um formato de data que inclui algarismos romanos para a parte do mês:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD RM YYYY';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM TZR';

Resultado:
Session altered.


Session altered.


Session altered.

Agora, quando chamo uma função que retorna um valor de data e hora, recebo o mês em algarismos romanos.

Exemplo:
SELECT TO_CHAR(SYSDATE) FROM DUAL;

Resultado:
10 VIII 2021

Observe que passei SYSDATE para TO_CHAR() .

Se eu não fizer isso, o NLS_DATE_FORMAT parâmetro não tem efeito:
SELECT SYSDATE FROM DUAL;

Resultado:
2021-08-10 20:04:49

Esse problema não existe com outros formatos de data. Eu só encontrei com algarismos romanos.

Uma solução mais permanente


Os exemplos acima são soluções temporárias para retornar o mês em algarismos romanos. Para uma solução mais permanente, os parâmetros NLS podem ser configurados no nível do banco de dados, no arquivo de parâmetros de inicialização ou em variáveis ​​de ambiente. Consulte Métodos de configuração de parâmetros NLS e suas prioridades para obter exemplos deles, bem como sua ordem de precedência em relação uns aos outros.