MySQL UTC到本地时区

时间:2015-10-22 00:59:40

标签: mysql timezone

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

现在我系统中的时间是

  

晚上8:53。 (EST)

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。

由于

1 个答案:

答案 0 :(得分:2)

实际上,你倒退了。当您指定-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。要使用这些,请确保为time zone support正确设置了MySQL安装。