我有一个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)
非常感谢
丹尼斯
答案 0 :(得分:1)
CONVERT_TZ(dt,from_tz,to_tz)
from_tz
是当前时间所在的时区,而to_tz
是您要将其转换为的时区。
答案 1 :(得分:1)
你不应该这样做。 MySQL将为您执行时区转换,前提是您将时间存储在TIMESTAMP
类型列中,并且您可以适当地设置会话time_zone
变量。如the manual中所述:
MySQL服务器维护多个时区设置:
[...]
每个连接时区。连接的每个客户端都有自己的时区设置,由会话
time_zone
变量给出。最初,会话变量从全局time_zone
变量中获取其值,但客户端可以使用以下语句更改自己的时区:mysql> SET time_zone = timezone;当前会话时区设置会影响区域敏感的时间值的显示和存储。这包括
NOW()
或CURTIME()
等函数显示的值,以及TIMESTAMP
列中存储和检索的值。TIMESTAMP
列的值将从当前时区转换为UTC以进行存储,并从UTC转换为当前时区以进行检索。当前时区设置不会影响
UTC_TIMESTAMP()
等功能显示的值或DATE
,TIME
或DATETIME
列中的值。这些数据类型中的值也不是以UTC格式存储的;仅当从TIMESTAMP
值转换时,时区才适用于它们。如果您想要DATE
,TIME
或DATETIME
值的特定于语言环境的算术,请将它们转换为UTC,执行算术,然后转换回来。