2010-12-28 3 views
0

Это как правильно возвращает текущий UNIX метку времени:Преобразование MySQL UTC DateTime в UNIX метку времени

SELECT UNIX_TIMESTAMP(LOCALTIMESTAMP()); #MySql 
echo time(); //PHP 

Но я храню UTC_TIMESTAMPs в моей базе данных (не LOCALTIMESTAMPs).

Как преобразовать дату и время UTC в временную метку UNIX с использованием MySQL?

ответ

2

Обратите внимание, что 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 в качестве посредника. Какой тип у вас на самом деле есть по местному времени?

+0

Я не хранил временные метки в своем столе. UNIX_TIMESTAMP() возвращает дату-время, которое я храню в столбце datetime в моей таблице. Мне интересно, как получить временную метку unix из моего utc datetime. – Emmett

+3

Нет проголосовать вообще, но временные метки эпохи в БД решили множество арифметических дат и проблем управления для многих схем, в которых я работал. Я не обязательно уклоняюсь от них. – Xailor

Смежные вопросы