Mysql FROM_UNIXTIME为UTC

wut*_*aer 24 mysql timezone

我怎样才能得到

FROM_UNIXTIME
Run Code Online (Sandbox Code Playgroud)

在mysql中作为UTC/GMT?日期在连接的时区中返回.

我不想改变连接的时区.

Mat*_*int 21

你最好提前设置时区:

SET time_zone='UTC';
select FROM_UNIXTIME(1277942400);
Run Code Online (Sandbox Code Playgroud)

原因是涉及本地时区的转换可能是有损的.这里的文档中有一个例子(参见UNIX_TIMESTAMP()"注意:"开头部分的第4段)

  • `SET time_zone ='+ 00:00'为我工作.如果您希望保留它,请参阅MārtiņšRadiņ答案. (6认同)

wut*_*aer 17

我的解决方案是

SELECT CONVERT_TZ(FROM_UNIXTIME(1277942400), @@session.time_zone,'UTC')
Run Code Online (Sandbox Code Playgroud)

如果CONVERT_TZ返回null,请确保填充mysql的时区表:

zypper install mysql-community-server-tools
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Run Code Online (Sandbox Code Playgroud)

  • 它是无状态的,但由于日期不明确而失败,因为 conver_ttz 无法知道源时间戳的时区偏移量。 (2认同)