使用CONCAT插入日期时报错SQLSTATE=42703,请求排查解决
错误原因及修正方案
错误原因
- 字符串引用错误:从驱动版本和错误码判断你使用的是DB2数据库,DB2中双引号
"用于引用表名、列名这类标识符,而非字符串常量。你用双引号包裹" - UK",数据库会将其识别为一个不存在的列名,因此触发SQLCODE=-206(标识符未找到)的错误。 - 日期计算偏差:你写的
CURRENT DATE - 3 DAYS是三天前的日期,但需求是插入两天前的日期,逻辑不符合预期。
修正后的SQL语句
INSERT INTO TABLE1 (column1) VALUES ( CONCAT(VARCHAR_FORMAT((CURRENT DATE - 2 DAYS), 'DD/MM/YYYY'), ' - UK') );
补充建议
- INSERT语句中明确指定目标列
(column1),可避免后续表结构变更时语句出错。 - SQL标准中字符串常量必须用单引号
'包裹,DB2默认遵循此规则,请勿用双引号包裹字符串。
内容的提问来源于stack exchange,提问作者SRJCoding
相关产品推荐
相关产品推荐

