Я перепутал ответы @ColinM и @Kenneth Spencer, потому что хотел смещение произвольного часового пояса в часах:
TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "UTC", "America/Denver"))
-
SELECT ROUND(TIMESTAMPDIFF(MINUTE, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "Etc/UTC", "Asia/Kolkata"))/60,1)
Как отметил Кеннет, вам нужно загрузить информацию о часовом поясе: http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html
Но тогда вы можете делать забавные вещи, такие как поиск смещения для нескольких часовых поясов одновременно:
SELECT Name,
TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "Etc/UTC", Name)) as Offset
FROM mysql.time_zone_name
WHERE (Name IN ('America/Vancouver', 'Etc/UTC', 'America/Denver'))
Предоставление:
+-------------------+--------+
| Name | Offset |
+-------------------+--------+
| America/Denver | -6 |
| America/Vancouver | -7 |
| Etc/UTC | 0 |
+-------------------+--------+