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

Другие вопросы по тегам