4

我有两张带有时间戳的表

TABLE1使用当地时间 TIME_STAMP

TABLE2使用 UTC 中的 TIME_STAMP

我需要做类似的事情

    select count(*) from TABLE1 where TIME_STAMP > TABLE2.TIME_STAMP

问题是这个应用程序将部署在多个时区,所以我不能使用以下

    SELECT CONVERT_TZ(TABLE2.TIME_STAMP,'EST','UTC')

因为 ' EST' 可以是任何时区。

有没有办法获取本地时区代码并将其替换为第二个参数?还是有更好更直接的方法来解决我的问题?

注意:TABLE1 和 TABLE2 TIME_STAMPS 都必须分别保持为本地和 UTC,因为它们是我无法控制的外部...

4

1 回答 1

17

这是我实施的解决方案:

这会将 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' )

于 2012-02-14T16:51:18.143 回答