Формат даты в MySQL выберите как ISO 8601
Я пытаюсь захватить дату из моей базы данных в стандартной метке времени и отобразить ее как ISO 8601. Я не могу легко сделать это на PHP, поэтому я пытаюсь сделать это в своем операторе SELECT. Это то, что у меня есть, но он отображает ошибку:
SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")
что я делаю не так?
7 ответов
на DATE_FORMAT(DateColumn)
должна быть SELECT
список:
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') AS date_formatted
FROM table_name
ORDER BY id DESC
почему это трудно сделать в PHP?
date("Y-m-d\TH:i:sO",strtotime($sqldata['time']));
во всяком случае, это DATE_FORMAT
должен быть в полях для выбора, а не привязан к концу.
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
это сработало для меня
DATE_FORMAT( CONVERT_TZ(`timestamp`, @@session.time_zone, '+00:00') ,'%Y-%m-%dT%TZ')
см. также c
строка формат даты: http://www.php.net/manual/en/function.date.php
echo date('c'); // expected "2013-03-08T14:45:37+05:00"
вы должны переместить DATE_FORMAT в выбранную часть вашего запроса следующим образом:
SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC
DATE_FORMAT(date, '%Y-%m-%dT%TZ')
должно быть select
предложения.
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ')
FROM table_name
ORDER BY id DESC