Подтвердить что ты не робот

Дата форматирования в MySQL SELECT как ISO 8601

Я пытаюсь взять дату из своей базы данных в стандартную метку времени и отобразить ее как ISO 8601. Я не могу легко сделать это в PHP, поэтому я пытаюсь сделать это в инструкции SELECT. Это то, что у меня есть, но оно отображает ошибку:

SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")

Что я делаю неправильно?

4b9b3361

Ответ 1

DATE_FORMAT(DateColumn) должен находиться в списке SELECT:

SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') AS date_formatted
FROM table_name 
ORDER BY id DESC 

Ответ 2

DATE_FORMAT работает только с столбцами даты MySQL, а не с метками времени.

Временная метка UNIX представляет собой целое число, содержащее количество секунд с 1 января 1970 UTC. Чтобы отформатировать это как дату ISO 8601, вам нужно использовать функцию FROM_UNIXTIME().

FROM_UNIXTIME принимает те же строки формата, что и DATE_FORMAT, поэтому для форматирования столбца с именем "created" вы должны:

SELECT created /* e.g. 1288799488 */ , 
       FROM_UNIXTIME(created,'%Y-%m-%dT%TZ') /* e.g. 2010-11-03T08:51:28Z */
FROM table_name

Ответ 3

Это сработало для меня

DATE_FORMAT( CONVERT_TZ(`timestamp`, @@session.time_zone, '+00:00')  ,'%Y-%m-%dT%TZ')

Ответ 4

Почему это трудно сделать в PHP?

date("Y-m-d\TH:i:sO",strtotime($sqldata['time']));

Во всяком случае, DATE_FORMAT должен быть в полях, чтобы выбирать, а не прикреплять их до конца.

Ответ 5

Вы должны переместить DATE_FORMAT в часть выбора вашего запроса следующим образом:

SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC

Ответ 6

Загрузить поле даты из базы данных и преобразовать его в формат ISO с помощью PHP просто; см. строку формата c для PHP date: http://www.php.net/manual/en/function.date.php

echo date('c'); // expected "2013-03-08T14:45:37+05:00"

Ответ 7

DATE_FORMAT(date, '%Y-%m-%dT%TZ') должен находиться в select.

SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') 
FROM table_name 
ORDER BY id DESC