oracle做查询select to_date(start_date,'yyyy-mm-dd')+3 from t_way_lubr报错文字与格式字符串不匹配。

结论: 1 . 确保 start_date 字段完全采用“yyyymmdd”格式。
2 . 检查月份和日期并在数字前添加零。
3 . 清理除日期以外格式的数据。
4 . 使用TO_CHAR函数检查格式。
5 . 检查SQL 查询语法是否正确。
6 . 检查数据库区域设置。

关键解决方案:数据格式正确,SQL无错误。

SQL 日期函数如何判断日期是否有效?

前几天我正在帮助同事调试旧系统,用户输入的生日“2 02 3 -02 -3 1 ”直接导致数据库崩溃。
我添加TRY_PARSE后就没问题了。
看看这个 SQLServer,只需一行代码即可完成:
sql TRY_CONVERT(DATE, '1 9 9 9 -02 -2 8 ') AS VALID_DATE
我突然想到,在PostgreSQL的严格模式下报告错误是相当烦人的,除非它被包装在PL/pgSQL中。
但是 MySQL 使用 STR_TO_DATE('2 000-02 -2 9 ', '%Y-%m-%d') 直接返回 NULL,这有多酷啊。

稍后我将查看 Oracle 的 TO_DATE() 函数。
看起来它有一个INOUT参数,可以控制如果转换失败是否报告错误或返回NULL。
不同数据库之间在这个细节上的差异非常有趣。