0

我正在尝试将日期时间从 Asia/Manila 转换为 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 在内的时间转换为任何时区,而无需对两个时区之间的间隔时间进行硬编码?

谢谢

4

1 回答 1

0

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

首先:我只是使用'US/Eastern'而不​​是'EST'来将日光包括在转换中。

第二:

因为我之前不知道第一个选项,所以我首先这样做是为了解决我的问题。

我创建了一个包含 DST 日期的表格,我在一些在线网站上找到了它。

在此处输入图像描述
然后
我创建一个 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;

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

谢谢。

于 2016-04-05T08:29:53.537 回答