Sql 将wierd时间戳格式转换为普通格式?
2021-05-06T02:21:20.000000Z 我在这个ISO 8601格式中获得时间戳,但是它在中间而不是空间。不知道如何在SQL select语句中编写脚本,将其转换为正常的时间戳Numberic:Continuous格式 挑选 时间戳Sql 将wierd时间戳格式转换为普通格式?,sql,unix,iso8601,Sql,Unix,Iso8601,2021-05-06T02:21:20.000000Z 我在这个ISO 8601格式中获得时间戳,但是它在中间而不是空间。不知道如何在SQL select语句中编写脚本,将其转换为正常的时间戳Numberic:Continuous格式 挑选 时间戳 ,from_unixtime(timestamp)我假设您使用的是MySQL,因为您引用了from_unixtime()函数的。该函数用于将32位整数转换为datetime,但它无法解析datetime的字符串表示形式 MySQL确实存在ISO860
,from_unixtime(timestamp)我假设您使用的是MySQL,因为您引用了from_unixtime()函数的
。该函数用于将32位整数转换为datetime,但它无法解析datetime的字符串表示形式
MySQL确实存在ISO8601格式的问题。它可以读懂,但在“Z”处会感到困惑:
mysql> select '2021-05-06T02:21:20.000000Z' + interval 0 minute as d;
+---------------------+
| d |
+---------------------+
| 2021-05-06 02:21:20 |
+---------------------+
1 row in set, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+-------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------------------------------+
| Warning | 1292 | Truncated incorrect datetime value: '2021-05-06T02:21:20.000000Z' |
+---------+------+-------------------------------------------------------------------+
如果我们省略“Z”,一切都很好:
mysql> select '2021-05-06T02:21:20.000000' + interval 0 minute as d;
+---------------------+
| d |
+---------------------+
| 2021-05-06 02:21:20 |
+---------------------+
1 row in set (0.00 sec)
因此,只需在SQL中或将ISO8601字符串值传递给SQL之前删除“Z”:
mysql> select replace('2021-05-06T02:21:20.000000Z', 'Z', '') + interval 0 minute as d;
+---------------------+
| d |
+---------------------+
| 2021-05-06 02:21:20 |
+---------------------+
1 row in set (0.00 sec)
您使用什么RDBMS(SQL风格)?日期/时间功能未完全标准化。SQL Server、mySQL、Oracle等等?顺便说一句,T
是ISO-8601日期+时间字符串的一部分。它应该在那里,任何声称处理该格式的人都应该理解它。