mysql - 将 CHAR 列转换为 MySQL 中的 DATETIME 列
问题描述
我有一个表“day_trade”,其中有一个名为“日期”的 CHAR 列,数据格式如下:Thu Apr 26 2018 00:00:22 GMT+0000
我想将此列转换为 DATETIME,以便我可以在列上执行数据转换等。我一直在使用 str_to_date 函数,但它并不总是可靠的。
我可以运行以下 SQL 并以我想要的日期格式获取数据
select convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime) from alert_test.day_trade
2018-04-26 00:00:22
因此,我尝试运行以下语句:
update alert_test.day_trade set date = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime)
计划是将字符串转换为有效的 DATETIME 格式,然后对列执行更改为 DATETIME 类型
0 78 13:17:51 update alert_test.day_trade set date = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime) Error Code: 1292.
我收到以下错误:
Truncated incorrect datetime value: 'Thu Apr 26 2018 00:00:22 GMT+0000' 0.047 sec
然后我想创建一个 DATETIME 类型的新“date2”列,并尝试从日期中选择,转换并插入到 date2 中:
update alert_test.day_trade set date2 = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime)
同样的错误
最后,我为 VARCHAR 类型创建了一个 date3,并认为我将转换为 date3,然后 a) 将该列更改为 DATETIME,或者选择插入到已经是 DATETIME 的 date2 中。
update alert_test.day_trade set date3 = convert(str_to_date(date, "%a %b %d %Y %k:%i:%s"),datetime)
同样的错误。
基本上我无法将我的数据转换为有效的 DATETIME 格式。
解决方案
我在发布格林威治标准时间后注意到导致问题。我不需要该信息,因此我将其删除,然后转换按预期工作。
update alert_test.day_trade set date = replace(date," GMT+0000", "")
推荐阅读
- apache-kafka - 当 KStream 拓扑中的自定义类中发生错误时,消费者偏移量会发生什么情况?
- node.js - JWT 解密加密令牌
- python - 重复数据删除库、阻塞问题、缺少匹配项
- linux - 为 Azure devops 服务器安装自托管 Linux 代理
- ios - 使用日历来获取确切的天数 Swift?
- asp.net-core - asp.net core modelstate 验证自定义错误信息。如何用引号或其他字符代替输入值
- odoo-13 - 引发警告并将值分配给 _onchange 中的字段
- php - 数据表没有在laravel中获取任何数据
- r - 如何压缩情节
- macos - 我想知道在哪里制作轻量级图形应用程序的新功能