Обратите внимание, что LOCALTIMESTAMP() является синонимом для NOW(). Так что вы действительно спрашиваете, как получить текущее время и преобразовать его в GMT, а затем преобразовать в временную метку unix для хранения в db. Так что это будет работать:
SELECT UNIX_TIMESTAMP(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'));
Как и в сторону, это всегда гораздо лучше использовать время и дату столбцов базы данных, а не временные метки Unix. Это упрощает поиск и отображение результатов.
Обновление: Вы уверены, что получаете то, что считаете себя собой? UNIX_TIMESTAMP returns a UTC based seconds since the UNIX epoch. Он не возвращает MySQL DateTime type. Если у вас есть фактический экземпляр DateTime UTC, вы можете поместить его непосредственно в столбец DateTime вашей базы данных и не должны использовать UNIX_TIMESTAMP в качестве посредника. Какой тип у вас на самом деле есть по местному времени?
Я не хранил временные метки в своем столе. UNIX_TIMESTAMP() возвращает дату-время, которое я храню в столбце datetime в моей таблице. Мне интересно, как получить временную метку unix из моего utc datetime. – Emmett
Нет проголосовать вообще, но временные метки эпохи в БД решили множество арифметических дат и проблем управления для многих схем, в которых я работал. Я не обязательно уклоняюсь от них. – Xailor