我有一个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()
)显示的值或DATE
、TIME
或DATETIME
列中的值。这些数据类型中的值也不以 UTC 格式存储;时区仅在从TIMESTAMP
值转换时适用于它们。如果要对DATE
、TIME
或DATETIME
值使用特定于区域设置的算术,请将其转换为 UTC,执行算术运算,然后转换回来。
CONVERT_TZ(dt,from_tz,to_tz)
from_tz
是当前时间所在的时区,to_tz
是要将其转换为的时区。