ORA-01861: 文字与格式字符串不匹配

2025-02-27 20:41:52
推荐回答(5个)
回答1:

解决方法:

一 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  表中的相关字段。

回答2:

解决方法:
这个错误一般出现在时间字段上,即你插入的时间格式和数据库现有的时间格式不一致,解决的方法是格式化插入的时间: to_date('#','yyyy-mm-dd hh24:mi:ss')
这样的插入的时候就不会报这个ORA-01861
当用pl/sql developer的text importer的时候,就会经常遇到这个错误,由于pl/sql developer的bug,有时不能把所有的date列格式化,就需要手工格式化date列。

回答3:

  1. oracle将字符串转换为日期时,需要一个格式(比如:‘yyyy-mm-dd’),次格式就是待转换的字符串的格式,如果你没有写格式,那oracle就会采用NLS_DATE_FORMAT 这个格式来转化;

  2. 格式必须匹配,否则转换报错:文字与格式字符串不匹配

  3. 你可以to_date('2005-7-1') 改为to_date('2005-7-1','yyyy-mm-dd') 或者 将NLS_DATE_FORMAT 的值改为:'yyyy-mm-dd'

 

--希望对你有帮助!!

回答4:

SELECT to_date('2005-7-1','yyyy-mm-dd') SJ from dual

回答5:

set 列名 = to_date('2016-01-10 23:59:59','yyyy-mm-dd hh24:mi:ss')