mysql - 截断不正确的日期时间值 - 带有时区的文本字段
问题描述
mysql 5.7
我有两张表 - 一张在 TEXT 字段中带有日期+时间+时区。另一个有一个日期时间字段。
我知道要将值从表 a(varchar)迁移到表 b(日期时间)。我可以选择这两个值并且它们“看起来”相同 - 但 Mysql 不允许插入/更新。
CREATE TABLE a (date_text_with_tz TEXT);
CREATE TABLE b (date_datetime DATETIME);
INSERT INTO b SELECT '2022-03-22 11:11:11';
INSERT INTO a SELECT '2022-03-22T11:11:11+01:00';
-- This shows pretty much the same values
SELECT DATE_FORMAT(a.date_text_with_tz, '%Y-%m-%d %T'), b.date_datetime FROM a
CROSS JOIN
b;
和这个
INSERT INTO b SELECT (DATE_FORMAT(a.date_text_with_tz, '%Y-%m-%d %T')) FROM a
返回
查询错误:错误:ER_TRUNCATED_WRONG_VALUE:截断不正确的日期时间值:'2022-03-22T11:11:11+01:00'
https://www.db-fiddle.com/f/hQPVimJZCvc574a1fJJ5Wf/0
如何将值从 varchar 字段迁移到 datetime 字段?时区可以省略。
解决方案
由于您不关心时区偏移,这应该可以工作(如果您的所有 TS 字符串都具有+01:00
我所假设的)
INSERT INTO b SELECT ( STR_TO_DATE(a.date_text_with_tz, '%Y-%m-%dT%H:%i:%s+01:00')) FROM a
推荐阅读
- android - 在 RecyclerView android 中使用 MediaPlayer 设置 ProgressBar
- c# - File.WriteAllLines 在 C# 中不起作用(Visual Studio 19)
- tfs - 如何在 TFS 2015 中创建一个文件夹来存储构建定义?
- kubernetes - helm 或 K8S 是否使用 spec.selector.matchLabels 覆盖 spec.template.metadata.labels?
- python - 如何使用 pymongo 将字典附加到 mongodb 中的现有键“processed_data”
- python - 有比 dt.weekofyear 更好的解决方案吗?
- python - 安装IDE后需要单独安装语言吗?
- python - 我如何知道 python 中的两个或多个字典中是否有任何“相等的值”?
- javascript - 为什么关键帧动画不起作用?
- powershell - 是否可以将 Register-PSRepository 与私有 gitlab 服务器(内部/私有项目)一起使用