Ответ 1
Вы должны иметь возможность конвертировать его из UTC в локальный часовой пояс сначала, используя CONVERT_TZ
:
UNIX_TIMESTAMP(CONVERT_TZ(some_date, '+00:00', @@global.time_zone))
См. также: 10.6. Поддержка часовых поясов сервера MySQL
Если я делаю unix_timestamp(some_date)
, он внутренне преобразует some_date
в UTC, а some_date
уже в UTC. Есть ли способ получить текущую временную метку Unix?
Изменить: мне нужна отметка времени Unix из UTC.
Вы должны иметь возможность конвертировать его из UTC в локальный часовой пояс сначала, используя CONVERT_TZ
:
UNIX_TIMESTAMP(CONVERT_TZ(some_date, '+00:00', @@global.time_zone))
См. также: 10.6. Поддержка часовых поясов сервера MySQL
Это отлично работает для меня:
UNIX_TIMESTAMP(CONVERT_TZ("some_date", '+00:00', 'SYSTEM'))
Вы можете получить временную метку UNIX в MySQL из значения datetime UTC, например:
SELECT
UNIX_TIMESTAMP(CONVERT_TZ("some_date", '+00:00', @@session.time_zone))
FROM `table_name`
Я сделал чит-коды здесь: Должен ли MySQL установить часовой пояс в UTC?
Вот несколько других способов сделать это:
SELECT UNIX_TIMESTAMP(myDate)+UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(UTC_TIMESTAMP())
FROM myTable
SELECT UNIX_TIMESTAMP(myDate)-TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP())
FROM myTable