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

它给出错误 ORA-01843: not a valid month


我跑了以下它做得很好

从 wkly_lnd.lnd_wkly_plan_rx_summary 选择 pd_end_dt,nrx_cnt,其中 pd_end_dt > '09 年 1 月 1 日'

但如果我想获得周数据怎么做

4

4 回答 4

4

您没有为TO_DATE提供格式字符串。这可能会导致 Oracle 错误地处理您的日期。尝试

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

相反(取决于您来自哪里,您可能想要更改 DD 和 MM 的顺序)。有关详细信息,请参阅TO_DATE 格式字符串参数的说明。

于 2009-08-25T07:16:42.253 回答
3

尝试

TO_DATE('01/01/2009', 'dd/mm/yyyy')
于 2009-08-25T07:15:40.243 回答
0

有两种可能:

  1. 由于默认日期格式(根据此处已经给出的其他答案),TO_DATE 函数失败。

  2. 该列pd_end_dt不是日期列。该查询试图在pd_end_dt比较之前将值转换为日期,并且在其中一行上失败。

展示:

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
于 2009-08-29T10:00:27.800 回答
0

好吧,不要听起来刺耳,但先做一个谷歌搜索。先前的答案有效,但有关更完整的解释,请参阅

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

如果您要像现在一样使用默认格式,那么您应该首先找出它是什么

于 2009-08-25T07:29:21.603 回答