Mysql - 如何将日期从 ISO 8601 格式转换并保存到 mysql 列?

use*_*809 9 mysql datetime

我在表 (varchar) 中有一个列,日期格式为 2013-09-05T10:10:02Z

如何使用更新查询将其转换为日期时间格式并将其保存在另一列中?

Har*_*non 13

您可以使用该STR_TO_DATE功能:

UPDATE table1 SET col2 = STR_TO_DATE(col1,'%Y-%m-%dT%TZ')
Run Code Online (Sandbox Code Playgroud)

例子:

mysql> select STR_TO_DATE('2013-09-05T10:10:02Z','%Y-%m-%dT%TZ');
+----------------------------------------------------+
| STR_TO_DATE('2013-09-05T10:10:02Z','%Y-%m-%dT%TZ') |
+----------------------------------------------------+
| 2013-09-05 10:10:02                                |
+----------------------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

  • 对于任何想要对包含微秒的 ISO 日期时间字符串执行相同操作的人,微秒的说明符是“%f”,因此格式是“%Y-%m-%dT%T.%fZ”。供参考:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format (7认同)

Onu*_*rım 8

您还可以使用CAST('2013-09-05T10:10:02Z' AS DATETIME)which 不需要格式定义,如STR_TO_DATE().

  • 执行此我收到:`错误:截断不正确的日期时间值:'2011-10-02T23:25:42Z'`。 (9认同)
  • 我不能代表@jengeb,但我使用“CAST()”得到了他们*相同的*错误“错误:截断…”。我使用的是 mySQL 版本 8.0.20。 (3认同)