0

我有一个日期列,其类型DATE和值的形式23-AUG-12, 09-FEB-12.现在我正在尝试运行查询,但出现错误

ORA-01843: not a valid month
01843. 00000 -  "not a valid month"
*Cause:    
*Action:

这是查询。实际上我想在右侧获取当前日期first_appr_dt = current date

select LOSA_APP.app_ref_no AS "App.Ref.No." from losa_app LOSA_APP where 
LOSA_APP.app_status='A' and first_appr_dt = 
(SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY') from dual);

我做错了什么?请帮忙 。

谢谢

4

2 回答 2

0
select LOSA_APP.app_ref_no AS "App.Ref.No." from losa_app LOSA_APP where 
LOSA_APP.app_status='A' and first_appr_dt = 
(SELECT TO_CHAR(SYSDATE, 'DD-MON-YY') from dual);
于 2012-11-20T06:40:07.463 回答
0

如果该列first_appr_dt确实是一DATE列,则无需将日期作为字符串进行比较。事实上,这可能是问题的根源。

此外,对于这个简单的表达式,不需要从 DUAL 中选择。

你宁愿:

select LOSA_APP.app_ref_no AS "App.Ref.No." from losa_app LOSA_APP
where LOSA_APP.app_status = 'A' and first_appr_dt = trunc(sysdate);

请注意,查询用于TRUNC从日期中删除时间,因为您的表可能包含时间设置为 00:00:00 的日期。如果没有,那么您应该尝试以下条件:

trunc(first_appr_dt) = trunc(sysdate)

If you really want to compare the dates as strings, then you would need to use TO_CHAR for both sides of the comparison:

to_char(first_appr_dt, 'DD-MON-YYYY') = to_char(sysdate, 'DD-MON-YYYY')
于 2012-11-20T07:03:45.250 回答