Читать дату и время MySQL как время Unix

У меня есть таблица со столбцом datetime. В этот столбец я записал даты UTC, используя UTC_TIMESTAMP(). Теперь из PHP я хочу получить эту дату UTC как временную метку unix. Как?

Я знаю о функции UNIX_TIMESTAMP(). Я не уверен, что это надежно, так как он использует местный часовой пояс и прочее. Я просто хочу чистое преобразование из даты и времени UTC в количество секунд с 1970 года...


person l33t    schedule 25.03.2012    source источник
comment
см. этот связанный вопрос: stackoverflow. ком/вопросы/4548780/   -  person Kaii    schedule 25.03.2012


Ответы (2)


В PHP вы бы использовали strtotime().

Изменить: UNIX_TIMESTAMP использует местные часовые пояса при преобразовании данных, хранящихся как timestamp, а не данных, хранящихся как datetime. См.: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp и http://dev.mysql.com/doc/refman/5.5/en/datetime.html.

Поскольку вы используете datetime, UNIX_TIMESTAMP должно быть безопасно.

person MichaelRushton    schedule 25.03.2012
comment
Так что нет способа сделать это в MySQL? - person l33t; 25.03.2012
comment
Вы можете просто использовать UNIX_TIMESTAMP(). Я считаю, что проблема с часовыми поясами связана с данными, хранящимися как тип timestamp, а не тип datetime, как вы используете: dev.mysql.com/doc/refman/5.5/en/datetime.html — я добавлю это в свой ответ - person MichaelRushton; 25.03.2012
comment
Действительно важная деталь. Спасибо :) - person l33t; 25.03.2012

SELECT UNIX_TIMESTAMP(datetime_field) as timestamp
FROM table

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp

person 472084    schedule 25.03.2012