データベースから標準のタイムスタンプで日付を取得し、ISO 8601 として表示しようとしています。PHP では簡単に実行できないため、SELECT ステートメントで実行しようとしています。これは私が持っているものですが、エラーが表示されます:
SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")
私は何を間違っていますか?
データベースから標準のタイムスタンプで日付を取得し、ISO 8601 として表示しようとしています。PHP では簡単に実行できないため、SELECT ステートメントで実行しようとしています。これは私が持っているものですが、エラーが表示されます:
SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")
私は何を間違っていますか?
リストにあるDATE_FORMAT(DateColumn)
必要がありSELECT
ます:
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') AS date_formatted
FROM table_name
ORDER BY id DESC
DATE_FORMAT は、タイムスタンプではなく、MySQL 日付列でのみ機能します。
UNIX タイムスタンプは、1970 年 1 月 1 日 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
Loading the date field from the database and converting it to ISO format with PHP is straight-forward; see the c
format string to PHP date
: http://www.php.net/manual/en/function.date.php
echo date('c'); // expected "2013-03-08T14:45:37+05:00"
なぜPHPでそれを行うのは難しいのですか?
date("Y-m-d\TH:i:sO",strtotime($sqldata['time']));
とにかく、それDATE_FORMAT
は選択するフィールドにある必要があり、最後まで付け足すのではありません。
DATE_FORMAT(date, '%Y-%m-%dT%TZ')
select
条項 に記載する必要があります。
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ')
FROM table_name
ORDER BY id DESC
次のように、DATE_FORMAT をクエリの選択部分に移動する必要があります。
SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC