【问题标题】:MySQL UTC to local time zoneMySQL UTC 到本地时区
【发布时间】:2016-01-21 04:25:07
【问题描述】:

我将 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。

是否有指示 convert tz 查询不要考虑夏令时?

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

以上查询返回

-04:00:00

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

谢谢

【问题讨论】:

    标签: mysql timezone


    【解决方案1】:

    实际上,你有它倒退。当您指定-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 安装。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2017-04-23
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 2017-04-29
      相关资源
      最近更新 更多