MySQL UTC到本地时区



我使用mysql作为我的应用程序,该应用程序是营业时间驱动的。

现在我的系统时间是

8:53点。(美国东部时间)

select now();   -> returns 2015-10-21 20:52:48 
select utc_timestamp(); -> returns 2015-10-22 00:53:50

我想将时间转换为用户时区特定的时间。

所以使用下面的查询转换为用户特定的时区。

select CONVERT_TZ(utc_timestamp(),'+00:00','-05:00');

上述查询返回

2015-10-21 19:55:49

考虑夏令时。但是,我希望这返回我系统中的当前时间> 2015-10-21 20:55:49。

是否有指示转换tz查询不考虑夏令时?

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

上述查询返回

04:00:00

我希望这将返回-05:00,因为我在EST。

谢谢

实际上,你把它弄反了。当您指定-05:00时,考虑到夏令时,它是而不是。不能,因为你只提供了一个偏移量。

之后,你说你希望它返回-05:00,但是如果你在美国东部时间,那么目前(直到2015年11月1日)夏令时是有效的。您现在处于EDT状态,即-04:00

所以SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);给出了正确的结果。如果您希望CONVERT_TZ给出正确的结果,那么您可以这样做:

select CONVERT_TZ(utc_timestamp(),'+00:00','SYSTEM');

通过SYSTEM使用系统的本地时区,这是您所要求的。然而,使用一个名为的时区通常是一个更好的主意,比如America/New_York。要使用这些,请确保您的MySQL安装正确设置为时区支持。

相关内容

  • 没有找到相关文章

最新更新