Конвертировать местное время TIME_STAMP в UTC - PullRequest
3 голосов
/ 22 июля 2011

У меня есть две таблицы с отметками времени

TABLE1 с TIME_STAMP по местному времени

TABLE2 с TIME_STAMP в UTC

Мне нужно сделать что-то вроде

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

Проблема в том, что это приложение будет развернуто в нескольких часовых поясах, поэтому я не могу использовать следующие

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

потому что 'EST' может быть любым часовым поясом.

Есть ли способ получить код местного часового пояса и подставить его в качестве второго аргумента? Или есть лучший и более прямой подход к решению моей проблемы?

ПРИМЕЧАНИЕ: TABLE1 и TABLE2 TIME_STAMPS должны оставаться локальными и UTC соответственно, поскольку они являются внешними, которые я не могу контролировать ...

1 Ответ

11 голосов
/ 14 февраля 2012

Вот решение, которое я реализовал:

Это преобразует СЕЙЧАС из местного часового пояса в 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' )

...