oracle数据库执行报错:ORA-01861: 文字与格式字符串不匹配

报错sql:

select to_date(sysdate,'yyyy-mm-dd') a from user

原因是:

to_date()函数第一个参数,要求的是一个字符串格式,当这个值是一个日期格式的时候就会报错,

解决方案:

方案一:
使用to_char(日期,'yyyy-mm-dd')将日期转为字符,再使用to_date(),

方案二:
修改数据库配置,让数据库隐式转换:

会话级:alter session set nls_date_format='yyyy-mm-dd';
全局级(写入文件,但是不立即生效):ALTER SYSTEM SET NLS_DATE_FORMAT = 'YYYY-MM-DD' SCOPE = SPFILE;
全局级(写入文件,立即生效):ALTER SYSTEM SET NLS_DATE_FORMAT = 'YYYY-MM-DD' SCOPE = BOTH;

请务必注意,对NLS相关的参数进行更改可能会影响到依赖于默认日期格式的应用程序或查询结果,所以在生产环境中做此类变更前应谨慎评估影响范围

posted @ 2024-03-18 17:49  菜鸡变小鸟  阅读(260)  评论(0编辑  收藏  举报