mysql - STR_TO_DATE(含时区)

标签 mysql datetime timezone str-to-date

我的 MySQL(版本 5.7.25)数据库有一列,其中充满了 varchar(100) 日期,例如 Fri May 04 08:08:42 UTC 2018.我需要将它们转换为日期。

到目前为止我已经想出了

SELECT STR_TO_DATE('Fri May 04 08:08:42 UTC 2018', '%a %b %d %T %Y') AS to_date

但由于时区的原因它返回 null。但如果我尝试:

SELECT STR_TO_DATE('Fri May 04 08:08:42 2018', '%a %b %d %T %Y') AS to_date

...它工作得很好。那么有没有办法在日期格式中添加时区?

最佳答案

如果字符串始终包含 UTC,那么您可以对其进行硬编码:

SELECT STR_TO_DATE('Fri May 04 08:08:42 UTC 2018', '%a %b %d %T UTC %Y') AS to_date
-- 2018-05-04 08:08:42

如果您还想转换时区信息,您需要使用 CONVERT_TZ功能:

SELECT CONVERT_TZ(STR_TO_DATE('Fri May 04 08:08:42 UTC 2018', '%a %b %d %T UTC %Y'), '+00:00', 'system')
-- 2018-05-04 13:08:42
-- actual result depends on system timezone

关于mysql - STR_TO_DATE(含时区),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55920357/

相关文章:

javascript - 如何(或更恰本地说 : Why) does JSON. Stringify 更改 Date() 值?

python - 根据最近的日期时间合并/连接数据框到不同的数据框

php - 我应该使用什么格式在 MySQL 表中存储用户的首选时区?

Java 将时间对象 (GMT) 转换为字符串 (GMT+1)

java - Java中的日期时间解析

PHP 到 Codeigniter 语法 - 从 db/form 输入中选择减法

php - 日志中时间戳的时区?

php - mysql和PDO同时连接

mysql - Laravel:如何显示可用时间段的列表

php - 我的 PHP 表单不会将数据插入 MySQL 数据库