【问题标题】:Mysql Convert_tzMysql Convert_tz
【发布时间】:2016-04-04 06:07:55
【问题描述】:

我正在尝试将日期时间从亚洲/马尼拉转换为 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)”

有谁知道这个技巧吗?
我可以轻松转换包括 DST 在内的时间 到任何时区而不对两个时区之间的间隔小时进行硬编码?

谢谢

【问题讨论】:

    标签: mysql convert-tz


    【解决方案1】:

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

    首先: 我只是使用 '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;

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

    谢谢。

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 2015-12-28
      相关资源
      最近更新 更多