Pergunta

SELECT pd_end_dt,nrx_cnt
FROM wkly_lnd.lnd_wkly_plan_rx_summary
WHERE pd_end_dt >TO_DATE('01/01/2009')

Está dando erro ORA-01843: não é um mês válido


Eu corri o seguinte, tudo bem

Selecione PD_END_DT, nrx_cnt de wkly_lnd.lnd_wkly_plan_rx_summary onde pd_end_dt> '01 -jan-09 '

Mas se eu quiser ter dados de semana de semana como fazer dat

Nenhuma solução correta

Outras dicas

Você não está dando uma string de formato para ATÉ A PRESENTE DATA. Isso pode fazer com que o Oracle lide com sua data errada. Tentar

to_date('01/01/2009', 'DD/MM/YYYY')

Em vez disso (dependendo de onde você é, convém alterar a ordem de DD e MM). Ver Esta descrição do argumento da string de formato to_date para detalhes.

tentar

TO_DATE('01/01/2009', 'dd/mm/yyyy')

Ok, para não parecer duro, mas faça uma pesquisa no Google primeiro. As respostas anteriores funcionam, mas para uma explicação mais de Comlete, consulte

http://www.dbmotive.com/oracle_error_codes.php?errcode=01843

Se você vai usar o formato padrão como está fazendo, você deve descobrir o que é o primeiro

Existem duas possibilidades:

  1. A função to_date está falhando devido ao formato de data padrão (conforme outras respostas já fornecidas aqui).

  2. A coluna pd_end_dt não é uma coluna de data. A consulta está tentando converter os valores em pd_end_dt datas antes da comparação e falhar em uma das linhas.

Para demonstrar:

SQL> create table t1 (datestrings varchar2(10));
SQL> insert into t1 values ('01/01/2009');
SQL> insert into t1 values ('02/01/2009');
SQL> insert into t1 values ('01/XX/2009');
SQL> select * from t1 where datestrings > '01/01/2009';

DATESTRINGS 
-----------
02/01/2009
01/XX/2009  

2 rows selected

SQL> select * from t1 where datestrings > TO_DATE('01/01/2009');

ORA-01843: not a valid month

SQL> select * from t1 where datestrings > TO_DATE('01/01/2009','DD/MM/YYY');

ORA-01843: not a valid month
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top