【问题标题】:Incorrect datetime value error - MYSQL dynamic query不正确的日期时间值错误 - MYSQL 动态查询
【发布时间】:2022-01-17 05:26:25
【问题描述】:

我在 MYSQL 中尝试了以下查询,但出现了不正确的日期时间值错误。如何解决这个错误?

create table Test(id datetime, title varchar(100));
insert into Test(id, title) values('2017-01-11', "Hello");
insert into Test(id, title) values('2018-01-11', "Hello");
SET @trimRetaineddate = '2017-01-11';
SET @delete_text = CONCAT('DELETE FROM Test WHERE id = ', CONVERT(@trimRetaineddate,DATE));
PREPARE delete_stmt FROM @delete_text;
EXECUTE delete_stmt;
select * from Test;

我得到的错误: 日期时间值不正确:“id”列的“2005”

【问题讨论】:

    标签: mysql sql dynamicquery dynamic-queries


    【解决方案1】:

    MySQL 中的日期文字应该用单引号括起来:

    SET @trimRetaineddate = '2017-01-11';
    SET @delete_text = CONCAT('DELETE FROM Test WHERE id = ''', @trimRetaineddate, '''');
    SELECT @delete_text;  -- DELETE FROM Test WHERE id = '2017-01-11'
    PREPARE delete_stmt FROM @delete_text;
    

    【讨论】:

      【解决方案2】:

      根据您的拼写 @delete_text 的结果是 从测试中删除 id = 2017-01-11

      MySQL数据库最后执行的SQL是DELETE FROM Test WHERE id = 2005 (2017-1-11=2005)

      因为缺少引号

      改成这个就可以执行了 SET @delete_text = CONCAT('DELETE FROM Test WHERE id = ','''' ,CONVERT(@trimRetaineddate,DATE),'''');

      【讨论】:

        猜你喜欢
        • 2021-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2020-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多