实际上,我试图在Oracle db中获取日期范围内的所有列,并且在SQL Developer中成功地做到了这一点,但是当我在SQL命令行界面中执行相同的代码时,会出现错误
ORA-01843:无效月份
我知道它是一个错误,它以to_date格式出现,但是它完全按照我的预期在SQL开发人员中执行,但是在SQL命令行中却没有。为什么会这样?
select to_date('01/04/2020') from dual;
即使此命令不起作用。
我尝试了所有格式方法进行to_date
方法转换,并检查了显示nls_date_format
的'DD-MM-RR'
我建议您始终提供适当的格式掩码。不要依赖Oracle隐式转换和猜测您想做什么。
看起来像'01/04/20'
的字符串可能是任何东西,具体取决于您使用的格式(dd/mm/yy
,yy/dd/mm
,mm/yy/dd
...所有都是有效的,但只有一个是正确的)。
SQL> alter session set nls_Date_format = 'dd-mm-rr';
Session altered.
SQL> select to_date('01/04/2020', 'dd/mm/yyyy') result from dual;
RESULT
------------------------------
01-04-20
SQL>