Преобразование сервера MySQL TimeStamp в UTC
Я использовал плагин timeago (http://timeago.yarp.com/), он отлично работал на моем локальном хосте, на котором MySQL хранит свои данные в метке времени UTC, и этот плагин должен работать.
Однако при загрузке моего проекта на сервер в его базе данных MySQL появляется метка времени другого типа. Я получаю метку времени с сервера "четверг, 24 февраля 2011 г., 16:29", а мне нужно что-то вроде этого: "2008-07-17T09:24:17Z"
Есть идеи, как конвертировать метки времени с помощью php?
Редактировать: метки времени, хранящиеся в неверном формате в базе данных, автоматически генерируются MySQL.
Редактировать 2: Это поле типа "timestamp" и по умолчанию установлено в "CURRENT_TIMESTAMP", когда строка вставляется в БД
3 ответа
Вы получаете странную строку для MySQL, вы уверены, что она находится в поле Datetime?
Вы можете получить метку времени UNIX (секунды с начала эпохи) из MySQL с помощью следующей функции, этот формат широко распространен на нескольких платформах:
SELECT UNIX_TIMESTAMP( table.datetime_field ) as datetime_field FROM table
Используя некоторые функции PHP, вы можете преобразовать его в желаемый формат:
echo date( 'c', $record[ 'datetime_field' ] );
Я думаю, что этого будет достаточно для вашей проблемы.
Внутренне [столбец метки времени MySQL][1] сохраняется как [UTC][2], но при выборе даты MySQL автоматически преобразует ее в текущий часовой пояс сеанса.
При сохранении даты MySQL предполагает, что дата находится в текущем часовом поясе сеанса, и преобразует ее в UTC для хранения.
Чтобы выбрать столбец отметки времени в формате UTC
независимо от того, в каком часовом поясе находится текущий сеанс MySQL:
SELECT
CONVERT_TZ(`timestamp_field`, @@session.time_zone, '+00:00') AS `utc_datetime`
FROM `table_name`
Вы также можете установить часовой пояс глобального или глобального или текущего сеанса в UTC, а затем выбрать временную метку следующим образом:
SELECT `timestamp_field` FROM `table_name`
Я сделал здесь шпаргалку: должен ли MySQL иметь часовой пояс с UTC?
SELECT UNIX_TIMESTAMP('your_date') AS your_date;
в запросе и$date('whatever_format', $timestamp_from_mysql);
в php