(MySQL) 子查询插入条件中包含日期转换

问题描述 投票:0回答:1

我有以下疑问:

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 date-conversion insert-select
1个回答
0
投票

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

这是关于 MySQL 中的警告。

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

插入忽略...

现在工作正常。

希望这会帮助其他人:) 谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.