MySQL UTC 到本地时区
MySQL UTC to local time zone
我的应用程序使用 mysql,并且该应用程序是工作时间驱动的。
现在我系统中的时间是
8:53 PM. (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');
上面的查询returns
2015-10-21 19:55:49
考虑夏令时。但是,我希望 return 我系统中的当前时间 > 2015-10-21 20:55:49。
是否有指示 convert tz 查询不考虑夏令时的方法?
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
上面的查询returns
-04:00:00
我预计这是 return -05:00,因为我在美国东部时间。
谢谢
实际上,你把它倒过来了。当您指定 -05:00
时,即 而不是 考虑到夏令时。它不能,因为你只提供了一个偏移量。
稍后,您说您预计 return -05:00
,但如果您使用的是美国东部时间,那么当前(至 2015 年 11 月 1 日)夏令时有效。您在美国东部时间 -04:00
.
所以 SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
给出了正确的结果。如果您希望 CONVERT_TZ
给出正确的结果,那么您可以这样做:
select CONVERT_TZ(utc_timestamp(),'+00:00','SYSTEM');
传递 SYSTEM
使用系统的本地时区,这正是您所要求的。但是,通常最好使用 命名的 时区,例如 America/New_York
。要使用这些,请确保您的 MySQL 安装已针对 time zone support.
正确设置
我的应用程序使用 mysql,并且该应用程序是工作时间驱动的。
现在我系统中的时间是
8:53 PM. (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');
上面的查询returns
2015-10-21 19:55:49
考虑夏令时。但是,我希望 return 我系统中的当前时间 > 2015-10-21 20:55:49。
是否有指示 convert tz 查询不考虑夏令时的方法?
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
上面的查询returns
-04:00:00
我预计这是 return -05:00,因为我在美国东部时间。
谢谢
实际上,你把它倒过来了。当您指定 -05:00
时,即 而不是 考虑到夏令时。它不能,因为你只提供了一个偏移量。
稍后,您说您预计 return -05:00
,但如果您使用的是美国东部时间,那么当前(至 2015 年 11 月 1 日)夏令时有效。您在美国东部时间 -04:00
.
所以 SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
给出了正确的结果。如果您希望 CONVERT_TZ
给出正确的结果,那么您可以这样做:
select CONVERT_TZ(utc_timestamp(),'+00:00','SYSTEM');
传递 SYSTEM
使用系统的本地时区,这正是您所要求的。但是,通常最好使用 命名的 时区,例如 America/New_York
。要使用这些,请确保您的 MySQL 安装已针对 time zone support.