如何在 MySQL 中将日期时间从任何区域转换为特定区域



我有一个mySQL表,上面记录了来自不同时区的日期。 如何在mySQL中执行SELECT语句时将DateTime值转换为查看用户时区?

    SELECT ClientID,
        convert_tz(MessageDate,???,???)
        MeetingType,
        MeetingDate,
        Comments,
        CompanyName
    FROM clientCompNotes
    WHERE ClID = 970392281 AND CompanyID=411972145

问题是接受从"MessageDate"字段中记录的日期开始的任何时区,如下所示

 Wed May 30 2012 12:51:02 GMT-0400 (Eastern Daylight Time)

非常感谢

丹尼斯

你不需要这样做。 MySQL将为您执行时区转换,前提是您将时间存储在TIMESTAMP类型列中,并适当地将会话time_zone变量设置。 如手册中所述:

MySQL服务器维护多个时区设置:

[...]

  • 每个连接的时区。连接的每个客户端都有自己的时区设置,由会话time_zone变量给出。最初,会话变量从全局time_zone变量中获取其值,但客户端可以使用以下语句更改自己的时区:

    mysql> SET time_zone = 时区;

当前会话时区设置会影响区域敏感时间值的显示和存储。这包括由函数(如 NOW()CURTIME())显示的值,以及存储在TIMESTAMP列中并从检索的值。TIMESTAMP列的值将从当前时区转换为 UTC 以进行存储,并从 UTC 转换为当前时区以进行检索。

当前时区设置不会影响函数(如 UTC_TIMESTAMP())显示的值或DATETIMEDATETIME列中的值。这些数据类型中的值也不以 UTC 格式存储;时区仅在从TIMESTAMP值转换时适用于它们。如果要对 DATETIMEDATETIME值使用特定于区域设置的算术,请将其转换为 UTC,执行算术运算,然后转换回来。

CONVERT_TZ(dt,from_tz,to_tz)

from_tz是当前时间所在的时区,to_tz是要将其转换为的时区。

相关内容

最新更新