无法比较sql中的两个to_date列

时间:2016-02-10 16:01:19

标签: sql oracle

以下是代码

and replace(to_char(to_date(FDP.Period_NAME,'MM-YY'),'MM-YY'),'-','') 
        <= replace(to_char(to_date('JAN-16','MM-YY'),'MM-YY'),'-','')

错误

  

错误:ORA-01843:不是有效月份   01843. 00000 - “不是有效月份”   *原因:
  *操作:

1 个答案:

答案 0 :(得分:0)

...有趣

Oracle文档here说格式掩码'MM'匹配“月(01-12; 1月= 01)”,但你使用'JAN'不应该工作。

但是当我在我的数据库上测试你的代码时,它神秘地工作!!!

SQL> select replace(to_char(to_date('JAN-16','MM-YY'),'MM-YY'),'-','') from dual;

REPLA
-----
0116

我仍然会将'JAN'更改为'01',并确认列FDP.Period_NAME不包含像'JAN','FEB'这样的月份缩短......

或更改格式掩码以匹配缩写的月份名称(即“MON”)。