MySQL STR_TO_日期和时区

MySQL STR_TO_日期和时区,mysql,datetime,timezone,liquibase,str-to-date,Mysql,Datetime,Timezone,Liquibase,Str To Date,我的系统时区是UTC+3 当我在MySQL中使用时间戳列时,它们是我时区的输出。因此,如果时间戳列的UTC时间为00:00,则我会将其显示为03:00 我需要使用STR\u to\u DATE用值填充timestamp列 例如,我: 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 我的结论是:

我的系统时区是UTC+3

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

我需要使用
STR\u to\u DATE
用值填充timestamp列

例如,我:

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\u zone
之类的变量进行时区转换。

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

SET time_zone = 'UTC';