我有两张带时间戳的表
TABLE1
,当地时间为TIME_STAMP
TABLE2
我需要做类似
的事情 select count(*) from TABLE1 where TIME_STAMP > TABLE2.TIME_STAMP
问题是此应用程序将部署在多个时区,因此我无法使用以下
SELECT CONVERT_TZ(TABLE2.TIME_STAMP,'EST','UTC')
因为“EST
”可以是任何时区。
有没有办法获取本地时区代码并将其替换为第二个参数? 或者是否有更好,更直接的方法来解决我的问题?
注意:TABLE1和TABLE2 TIME_STAMPS必须分别保留为本地和UTC,因为它们是我无法控制的外部...
答案 0 :(得分:10)
以下是我实施的解决方案:
这会将NOW从当地时区转换为UTC
SELECT CONVERT_TZ( NOW(), @@session.time_zone, '+00:00' )
这会将任何给定的TIMESTAMP字符串从本地时区转换为UTC
SELECT CONVERT_TZ( "2012-02-14 16:44:36", @@session.time_zone, '+00:00' )