解决方法:
一 Server 修改:
init文件中: NLS_DATE_FORMAT设定为YYYY-MM-DD
或者client端修改:
设定或修改环境变量
name:NLS_DATE_FORMAT
values:yyyy-mm-dd
二 sysdba登录,更新props$这个表里的字段即可。
update props$ set value = 'YYYY-MM-DD HH24:MI:SS' where parameter = 'NLS_DATE_FORMAT';
初用Oracle,常见错误汇总:
一 如图所示:我们在查询大于某个时间点的数据时发生“ORA-01861:文字与格式字符串不符”的错误。
SQL语句:
select * from tablename where update_time>'2017/03/01'
二 首先排除是否是字段用错,检查表中是否存在 update_time 字段。
三 排除字段错误的情况后,我们考虑到格式转换 to_date('2017/03/01','yyyy/mm/dd')。
四 通过to_date('2017/03/01','yyyy/mm/dd')日期时间格式转换,查询出结果。
五 同时习惯性的加上排序会使查询结果更直观。
Order by 表中的相关字段。
解决方法:
这个错误一般出现在时间字段上,即你插入的时间格式和数据库现有的时间格式不一致,解决的方法是格式化插入的时间: to_date('#','yyyy-mm-dd hh24:mi:ss')
这样的插入的时候就不会报这个ORA-01861
当用pl/sql developer的text importer的时候,就会经常遇到这个错误,由于pl/sql developer的bug,有时不能把所有的date列格式化,就需要手工格式化date列。
oracle将字符串转换为日期时,需要一个格式(比如:‘yyyy-mm-dd’),次格式就是待转换的字符串的格式,如果你没有写格式,那oracle就会采用NLS_DATE_FORMAT 这个格式来转化;
格式必须匹配,否则转换报错:文字与格式字符串不匹配
你可以to_date('2005-7-1') 改为to_date('2005-7-1','yyyy-mm-dd') 或者 将NLS_DATE_FORMAT 的值改为:'yyyy-mm-dd'
--希望对你有帮助!!
SELECT to_date('2005-7-1','yyyy-mm-dd') SJ from dual
set 列名 = to_date('2016-01-10 23:59:59','yyyy-mm-dd hh24:mi:ss')