Конвертировать дату и время в формате MySQL UTC в метку времени UNIX - PullRequest
0 голосов
/ 28 декабря 2010

Они оба правильно возвращают текущую метку времени UNIX:

SELECT UNIX_TIMESTAMP(LOCALTIMESTAMP()); #MySql
echo time(); //PHP

Но я храню UTC_TIMESTAMPs в моей базе данных (не LOCALTIMESTAMPs).

Как я могу преобразовать дату и время UTCUNIX отметка времени с использованием MySQL?

1 Ответ

2 голосов
/ 28 декабря 2010

Обратите внимание, что LOCALTIMESTAMP () является синонимом NOW (). Так что вы действительно спрашиваете, как получить текущее время и преобразовать его в GMT, а затем преобразовать в метку времени Unix для хранения в БД. Так что это будет работать:

SELECT UNIX_TIMESTAMP(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'));

Кроме того, всегда лучше использовать столбцы времени и даты базы данных, а не метки времени Unix. Это значительно упрощает запрос и отображение результатов.

Обновление: Вы уверены, что получаете то, что думаете? UNIX_TIMESTAMP возвращает секунды в формате UTC, начиная с эпохи UNIX . Он не возвращает MySQL DateTime тип . Если у вас есть фактический экземпляр UTC DateTime, вы можете поместить его непосредственно в столбец DateTime своей базы данных, и вам не нужно будет использовать UNIX_TIMESTAMP в качестве посредника. Какой у вас тип по местному времени?

...