64

データベースから標準のタイムスタンプで日付を取得し、ISO 8601 として表示しようとしています。PHP では簡単に実行できないため、SELECT ステートメントで実行しようとしています。これは私が持っているものですが、エラーが表示されます:

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

私は何を間違っていますか?

4

7 に答える 7

108

リストにあるDATE_FORMAT(DateColumn)必要がありSELECTます:

SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') AS date_formatted
FROM table_name 
ORDER BY id DESC 
于 2012-02-17T01:48:36.607 に答える
8

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
于 2013-05-04T20:18:21.890 に答える
6

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"
于 2013-03-08T19:46:01.390 に答える
4

なぜPHPでそれを行うのは難しいのですか?

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

とにかく、それDATE_FORMATは選択するフィールドにある必要があり、最後まで付け足すのではありません。

于 2012-02-17T01:50:47.383 に答える
4

DATE_FORMAT(date, '%Y-%m-%dT%TZ')select条項 に記載する必要があります。

SELECT DATE_FORMAT(date, '%Y-%m-%dT%TZ') 
FROM table_name 
ORDER BY id DESC 
于 2012-02-17T01:53:39.373 に答える
3

次のように、DATE_FORMAT をクエリの選択部分に移動する必要があります。

SELECT *, DATE_FORMAT(date,"%Y-%m-%dT%TZ") AS date FROM table_name ORDER BY id DESC
于 2012-02-17T01:49:51.047 に答える