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相关的参数进行更改可能会影响到依赖于默认日期格式的应用程序或查询结果,所以在生产环境中做此类变更前应谨慎评估影响范围
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库