標準のタイムスタンプでデータベースから日付を取得し、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( CONVERT_TZ(`timestamp`, @@session.time_zone, '+00:00') ,'%Y-%m-%dT%TZ')
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
PHPで実行するのが難しいのはなぜですか?
date("Y-m-d\TH:i:sO",strtotime($sqldata['time']));
とにかく、そのDATE_FORMAT
選択するフィールドに存在する必要があり、最後に追加する必要はありません。
次のように、DATE_FORMATをクエリの選択部分に移動する必要があります。
SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC
データベースから日付フィールドをロードし、PHPを使用してISO形式に変換するのは簡単です。c
形式文字列をPHP date
: http://www.php.net/manual/en/function.date.php
echo date('c'); // expected "2013-03-08T14:45:37+05:00"
DATE_FORMAT(date, '%Y-%m-%dT%TZ')
はselect
句に含める必要があります。
SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ')
FROM table_name
ORDER BY id DESC