我怎样才能得到
FROM_UNIXTIME
在mysql中是UTC/GMT吗?日期以连接的时区返回。
我不想更改连接的时区。
发布于 2013-08-16 23:41:26
您最好提前设置时区:
SET time_zone='UTC';
select FROM_UNIXTIME(1277942400);
原因是涉及本地时区的转换可能会有损失。在docs here中有一个这样的例子(请参阅UNIX_TIMESTAMP()
部分下以“注意:”开头的第4段)
发布于 2013-08-16 23:21:46
我的解决方案是
SELECT CONVERT_TZ(FROM_UNIXTIME(1277942400), @@session.time_zone,'UTC')
如果CONVERT_TZ返回null,请确保mysql的时区表已填满:
zypper install mysql-community-server-tools
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
发布于 2017-07-19 21:06:34
我知道这个问题已经得到了回答,但我仍然想做出贡献:
如果你不想让你的服务器使用NOW()
和FROM_UNIXTIME()
等函数来产生协调世界时,你必须像@Matt Johnson所说的那样设置time_zone
。
有一件事他没有提到:SET time_zone = timezone;
只为当前连接设置时区。如果您希望这些函数在默认情况下返回/转换您的日期为UTC,那么可以使用SET GLOBAL time_zone = '+00:00'
,这样您就不必在每次保存基于UTC的日期时都设置时区。
检查您当前的time_zone设置:SELECT @@global.time_zone, @@session.time_zone;
MySQL :: MySQL 5.5 Reference Manual :: 10.6 MySQL Server Time Zone Support
https://stackoverflow.com/questions/18276768
复制相似问题