(MySQL的)“按子查询插入”在条件中包含日期转换

(MySQL) Insert by subquery contains date conversion in the condition

提问人:Hisham M. Najem 提问时间:10/12/2023 最后编辑:SelVaziHisham M. Najem 更新时间:10/17/2023 访问量:22

问:

我有以下疑问:

SELECT 'Wrong DATE format'
FROM  DATE_TABLE
WHERE CONVERT(STR_TO_DATE( STATUS_DATE, '%Y-%c-%e %H:%i:%s'), CHAR(20)) \<\> STATUS_DATE;

列“STATUS_DATE”的数据类型为“LONGTEXT”,值为“2014-11-30 00:00:00.000

查询工作正常,并得到结果。

当我使用查询插入错误日志表时:

INSERT INTO ERROR_LOG (THE_ERROR)
SELECT 'Wrong DATE format'
FROM  DATE_TABLE
WHERE CONVERT(STR_TO_DATE( STATUS_DATE, '%Y-%c-%e %H:%i:%s'), CHAR(20)) \<\> STATUS_DATE;

列“THE_ERROR”的数据类型为“VARCHAR(4000)”。

我收到错误:

错误代码:1292。截断不正确的日期时间值:'2014-11-30 00:00:00.000'

有人可以帮我解决这个问题吗?我哪里做错了?

我正在使用 CONVERT() 函数来确保 where 条件中的结果保持为字符串并避免任何转换为 DATE。

但是仍然存在隐式日期转换,我不确定在哪里以及为什么我不确定,以及为什么在使用插入时会出现此错误?

mysql 日期转换 insert-select

评论


答:

0赞 Hisham M. Najem 10/17/2023 #1

我在其他问题中找到了答案,将尝试在这里分享。

它是关于MySQL中的警告。

查询返回结果,但仍带有警告,并且带有警告,您不能插入或更新到表中。所以我不得不使用:

插入忽略...

现在它工作正常。

希望这能帮助其他人:) 谢谢

评论

0赞 Hisham M. Najem 10/17/2023
我从这个答案中得到了帮助,看起来我应该在提出问题之前进行更多搜索。stackoverflow.com/q/21213561/22245892