0

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

    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)

非常感谢

丹尼斯

4

2 回答 2

1
CONVERT_TZ(dt,from_tz,to_tz)

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

于 2012-05-30T17:21:03.183 回答
1

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

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

[...]

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

    mysql> SET time_zone = 时区;

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

当前时区设置不会影响函数显示的值,例如、 或列中的UTC_TIMESTAMP()或 值。这些数据类型中的值也不以 UTC 存储;时区仅在从值转换时适用于它们。如果您想要、 或值的特定于语言环境的算术,请将它们转换为 UTC,执行算术,然后再转换回来。DATETIMEDATETIMETIMESTAMPDATETIMEDATETIME

于 2012-05-30T18:03:47.017 回答