日期型数据有误或者安装Oracle时设置NLS_DATE_LANGUAGE为美国,或其他国家,也有可能导致ORA-01861错误,因为的日期写法有些不一样:
亚洲是 RR/MM/DD HH24:MI:SSXFF
美国是 RR/MOD/DD HH24:MI:SSXFF
欧洲是 MM/DD/RR HH24:MI:SSXFF
及时同一个开发项目,如果组员各自设置不同的时间格式,会出现在某机器上可以运行的程序,在另一程序无法运行。
例如
SELECT TO_DATE(TO_CHAR(SYSDATE,'YYYYMMDD')) FROM DUAL;
这个语句只能在日期样式为亚洲时可以运行。
如果要在美国的日期样式运行程序,可以修改为:
SELECT TO_DATE(TO_CHAR(SYSDATE,'RRMODDD')) FROM DUAL;
所以开发时也要统一数据库的NLS_DATE_LANGUAGE。