执行DELETE语句遇1260类型转换错误,求日期写法修正方案
搞定你的SQL错误:类型转换问题解析与修复方案
嘿,咱们先拆解你遇到的1260错误,以及2018-03-31写法的问题:
1. "2018-03-31"的核心问题
你没给这个日期值加单引号!数据库会把无引号的2018-03-31当成算术运算:2018 - 3 - 31,算出来是数值1984。而你的inv_date是日期类型,数据库没办法把数值和日期直接做比较,这就触发了"无法在指定类型间转换"的错误。
2. 还有这些语法小坑需要修正
除了日期引号,你的INTERVAL写法也不对:
- 多了一个多余的右括号(原SQL里
TO MONTH)的最后一个)是多余的) - 标准的INTERVAL语法应该是
INTERVAL '72' MONTH(部分数据库支持INTERVAL 72 MONTH,但带单引号的写法兼容性更好)
3. 修复后的可执行SQL
根据常见数据库(比如Informix,因为1260是它的错误码)的语法,修改后的SQL如下:
DELETE FROM invoice WHERE inv_date < DATE('2018-03-31') - INTERVAL '72' MONTH;
如果你的数据库支持直接通过单引号识别日期字面量,也可以简化成:
DELETE FROM invoice WHERE inv_date < '2018-03-31' - INTERVAL '72' MONTH;
内容的提问来源于stack exchange,提问作者user8367639
相关产品推荐
相关产品推荐

