mysql insert into语句有问题,datetime值不会传输到新表

pcww981p  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(297)

这个问题在这里已经有答案了

在mysql中何时使用单引号、双引号和反引号(13个答案)
两年前关门了。
第一次发帖,所以请原谅我遗漏了什么。在mysql社区服务器gpl版本8.0.11中,我一直在努力将数据从一个表传输到另一个表。为了更好地设置场景,我从mongodb导入数据,然后执行str\u to\u date函数,然后需要将特定列移动到另一个表中,每当我运行命令/查询时,其中一个是datetime数据类型的列。代码如下:

INSERT INTO mlb.hazards 
SELECT '_id', 'Source', 'CreatedTime', 'AlarmId', 'Description'
FROM mlb.incident_20181007 
WHERE Description = 'ALARM ON Runway Hazard 27R 9L';

我得到返回错误消息:
错误代码:1292。日期时间值不正确:第120行“createdtime”列的“createdtime”为0.000秒
我找到了createdtime的数据和第120行的id,这就是我发现的。
从mysql workbench复制的数据:“2018-07-03 13:35:41.421000”,“621e30c4401749328035e215e680ca6a”
两个表中的列数据类型都列为datetime,请帮助我理解这里缺少的内容。先谢谢你。

txu3uszq

txu3uszq1#

这可能是传递字符串而不是列值的简单问题。看起来您正在尝试从事件表中插入列的值(例如列id、源等等)。但是,因为您已经用单引号括起来了,所以实际上是在传递文本字符串值。换句话说,它试图插入字符串“createdtime”,而不是该列中的datetime值。
mysql不使用单引号,而是使用反引号。您的查询应该是:

INSERT INTO mlb.hazards 
SELECT 
    `_id`, `Source`, `CreatedTime`, `AlarmId`, `Description` 
FROM 
    mlb.incident_20181007 
WHERE 
    `Description` = 'ALARM ON Runway Hazard 27R 9L';

相关问题