Py学习  »  DATABASE

datetime值错误-MYSQL动态查询

Harish Duraiarasan • 3 年前 • 1341 次点击  

我在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”不正确

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128309
 
1341 次点击  
文章 [ 2 ]  |  最新文章 3 年前
zhigang.chai
Reply   •   1 楼
zhigang.chai    3 年前

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

MySQL数据库执行的最后一个SQL是DELETE FROM Test,其中id=2005(2017-1-11=2005)

因为缺少引用

把它改成这个,它就可以执行了 设置@delete_text=CONCAT('delete FROM Test,其中id=','',CONVERT(@trimrateAddate,DATE),'');

Tim Biegeleisen
Reply   •   2 楼
Tim Biegeleisen    3 年前

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;