Преобразование сервера MySQL TimeStamp в UTC
Я использую плагин timeago (http://timeago.yarp.com/), он отлично работает на моем localhost, у которого MySQL хранит свои данные в метке времени UTC, которую плагин должен работа.
Однако при загрузке моего проекта на сервер появляется в нем база данных MySQL другого типа. Я получаю временную метку: "Четверг, 24 февраля 2011 г. 16:29" с сервера, тогда как мне нужно что-то вроде этого: "2008-07-17T09: 24: 17Z"
Любая идея, как преобразовать временные метки с помощью php?
Изменить: временные метки, хранящиеся в неправильном формате в базе данных, автоматически генерируются mysql.
Изменить 2: это поле типа "timestamp" и по умолчанию установлено значение "CURRENT_TIMESTAMP", когда строка вставлена в db
Ответы
Ответ 1
Вы получаете странную строку для MySQL, вы уверены, что она находится в поле Datetime?
Вы можете получить временную метку UNIX (секунды с эпохи) из MySQL со следующим function, этот формат широко принят на нескольких платформах
SELECT UNIX_TIMESTAMP( table.datetime_field ) as datetime_field FROM table
Используя некоторые Функции PHP, вы можете преобразовать их в желаемый формат:
echo date( 'c', $record[ 'datetime_field' ] );
Я думаю, этого будет достаточно для вашей проблемы.
Ответ 2
SELECT UNIX_TIMESTAMP('your_date') AS your_date;
в запросе и
$date('whatever_format', $timestamp_from_mysql);
в php
Ответ 3
Внутренне [колонка timestamp 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?