Преобразование сервера 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?