2016-04-04 29 views
0

我试图从亚洲/马尼拉到EST时区 一个时间值转换没有宣布确切的间隔像 date_sub(), subdate(), date_add(), adddate()Mysql的CONVERT_TZ

我发现很容易使用
SELECT DATE_SUB('2016-04-04 13:00:00', INTERVAL 12 HOUR);
结果将是2016-04-04 01:00:00

但我试图创建一个动态脚本,我不需要看多少个小时是两个时区
和我找到Convert_TZ()做j OB
SELECT CONVERT_TZ('2016-04-04 13:00:00', 'Asia/Manila', 'EST');
但此查询的结果是2016-04-04 00:00:00 也许这本地函数不包括“夏令时间(DST)”

有谁知道怎么做的伎俩?
在那里我可以很容易地将包括DST 在内的时间转换为任何时区,而无需对两个时区之间的时间间隔进行硬编码?

感谢

回答

0

好了,我的问题解决了,我用两个选项

第一: 我简单地使用“美/东”而不是“EST”包括在转换的日光。

二:

因为我不知道前面的第一个选项我做到这一点,首先要解决我的问题。

我创建一个组成它是DST 日,我在一些网站在网上找到的表..

enter image description here
然后
我创建了一个MySQL的函数,其中它的查找表上方
其中,如果在指定的日期是DST开始和DST之间最终它会自动增加1个小时,

我的功能是这样的, CREATE FUNCTION usp_Convert(specified_date DATETIME, From_Timezone VARCHAR(20), To_Timezone VARCHAR(20), is_DST INT(1)) RETURNS datetime

DECLARE theDate DATETIME;
SET theDate = CONVERT_TZ(specified_date, From_Timezone, To_Timezone);

IF is_DST = 1 AND To_Timezone= 'EST' THEN
SET theDate = ADDDATE(theDate, INTERVAL 1 HOUR);
END IF;
RETURN theDate;

这可能不是最好的答案,但这个完全解决我的问题

谢谢。