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

Adicionar o indicador ordinal a uma data no Oracle


No Oracle Database, podemos usar o TH elemento de formato para adicionar o sufixo do número ordinal ao resultado de um TO_CHAR() operação ao formatar datas.

Por exemplo, em vez de gerar 10 Feb poderíamos produzir 10th Feb . Ou, em vez de gerar 21 century , podemos produzir 21 century . O mesmo se aplica aos componentes de data soletrada. Por exemplo, em vez de Twenty One , podemos produzir Twenty First .

Exemplo


Segue um exemplo para demonstrar:
SELECT TO_CHAR(DATE '2030-12-01', 'Ddth Month')
FROM DUAL;

Resultado:
01st December

Podemos usar o fm modificador de formato para remover o zero à esquerda, se necessário:
SELECT TO_CHAR(DATE '2030-12-01', 'fmDdth Month')
FROM DUAL;

Resultado:
1st December

Observe que a capitalização do número ordinal é determinada pelo elemento de formato relevante (neste caso, o Dd parte), não o TH sufixo.

Veja o que acontece quando alteramos o segundo d para maiúsculas:
SELECT TO_CHAR(DATE '2030-12-01', 'fmDDth Month')
FROM DUAL;

Resultado:
1st December

Portanto, embora tenhamos fornecido o th sufixo em letras minúsculas, não afetou o resultado. A capitalização foi determinada pelo elemento de formato (não incluindo o fm modificador de formato).

Também podemos adicionar o número ordinal ao retornar outros componentes de data, como o século:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL;

Resultado:
21st Century

Datas soletradas


Podemos adicionar o SP elemento de formato para ter a parte da data soletrada:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL;

Resultado:
TWENTY-FIRST Century

E podemos usar letras maiúsculas conforme necessário:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL;

Resultado:
Twenty-First Century

Veja o que acontece quando omitimos o TH especificador de formato:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL;

Resultado:
Twenty-One