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

Como extrair o número do mês da data no Oracle


Se o valor for um número ou string, você poderá convertê-lo em uma data com uma máscara apropriada - que é o que está faltando e o que está causando o erro que está recebendo (já que está usando o NLS_DATE_FORMAT configuração, que aparentemente não corresponde ao formato dos dados; mas no qual você não deve confiar de qualquer maneira, como @MTO disse nos comentários):
to_date(ID_BB_SECURITY, 'YYYYMMDD')

e então extraia o número do mês a partir desse:
select extract(month from to_date(ID_BB_SECURITY, 'YYYYMMDD')) from BT_EXPORT

Ou você pode simplesmente usar uma substring:
select to_number(substr(ID_BB_SECURITY, 5, 2)) from BT_EXPORT;

Eles assumem um formato consistente fixo, que é sempre uma suposição arriscada ao usar o tipo de dados errado. E se for um número, eles estão fazendo uma conversão implícita de número para string, que você pode transformar em uma conversão explícita para maior clareza.

Se já for uma data - como deveria ser, claro - então você não precisa da conversão:
select extract(month from ID_BB_SECURITY) from BT_EXPORT