gpt4 book ai didi

Mysql - 日期时间 LIKE '2018-01%' 的 where 子句中的日期时间值不正确

转载 作者:行者123 更新时间:2023-11-29 02:42:28 25 4
gpt4 key购买 nike

如果 datetime 上有 LIKE 子句,有人能告诉我为什么这个命令会抛出错误吗?这是代码:

UPDATE surveys
LEFT JOIN tasks ON surveys.task_id = tasks.id
SET surveys.ended = tasks.date_to_resolve
WHERE tasks.date_to_resolve LIKE '2018-01%' AND surveys.ended LIKE '2018-02%'

它抛出错误“不正确的日期时间值:第 1 行的‘date_to_resolve’列的‘2018-01%’”最奇怪的是 SELECT 语句在相同条件下运行良好

SELECT * FROM surveys
LEFT JOIN tasks ON surveys.task_id = tasks.id
WHERE tasks.date_to_resolve LIKE '2018-01%' AND surveys.ended LIKE '2018-02%'

最佳答案

不要对日期使用like。 MySQL 对实际日期函数有很好的支持。

所以:

WHERE tasks.date_to_resolve >= '2018-01-01' AND tasks.date_to_resolve < '2018-02-01' AND
surveys.ended >= '2018-02-01' AND surveys.ended < '2018-03-01'

这可以防止日期和时间之间的隐式转换,并允许引擎使用优化器(如果有合适的优化器)。

编辑:

正确的更新查询是:

UPDATE surveys s JOIN
tasks t
ON s.task_id = t.id
SET s.ended = t.date_to_resolve
WHERE t.date_to_resolve >= '2018-01-01' AND t.date_to_resolve < '2018-02-01' AND
s.ended >= '2018-02-01' AND surveys.ended < '2018-03-01';

LEFT JOIN 正在被 WHERE 撤消,因此您不妨正确地表达连接。

关于Mysql - 日期时间 LIKE '2018-01%' 的 where 子句中的日期时间值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com