Mysql Convert_tz

时间:2016-04-04 06:07:55

标签: mysql convert-tz

我试图将日期时间从亚洲/马尼拉转换为EST时区 没有声明确切的间隔 date_sub(), subdate(), date_add(), adddate()

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

但我试图创建一个动态脚本,我不需要看两个时区之间的差异是多少小时
我发现Convert_TZ()要做工作 SELECT CONVERT_TZ('2016-04-04 13:00:00', 'Asia/Manila', 'EST');
但此查询的结果为2016-04-04 00:00:00 也许这个原生功能不包括夏令时(DST)"

有谁知道怎么做?
我可以轻松转换包括夏令时在内的时间 任何时区都没有硬编码两个时区之间的间隔时间?

由于

1 个答案:

答案 0 :(得分: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;

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

感谢。