MySQL STR_TO_DATE and timezone



我的系统时区是UTC+3。

当我在 MySQL 中使用时间戳列时,它们是我的时区的输出。因此,如果时间戳列的 UTC 为 00:00,则对我来说显示为 03:00。

我需要使用 STR_TO_DATE 的值填充时间戳列。

例如,我做:

INSERT INTO `dates`(`created`) 
VALUES (STR_TO_DATE('2016-11-01 00:00:00', '%Y-%m-%d %H:%i:%s'))

插入的值按原样显示:2016-11-01 00:00:00

我的结论是:STR_TO_DATE认为其输入在系统时区 (UTC+3) 中。

但我有 UTC 时区的日期时间字符串。我该怎么办?查询在 Liquibase 迁移中运行,因此我不能使用 @@global.time_zone 等变量进行时区转换。

当您有一个 TIMESTAMP 列并使用字符串(如 '2016-11-01 00:00:00' )对其进行初始化时,它将以与当前连接关联的时区进行解释,但是,该时区可能与系统时区不同,然后转换为 UTC 进行存储。要解释 UTC 时区中的日期文本,您必须首先使用以下 SQL 在当前连接上设置时区:

SET time_zone = 'UTC';

相关内容

  • 没有找到相关文章

最新更新