2017-04-12 12 views
1

私は、updated TIMESTAMPと宣言された列を更新しましたが、これは唯一のTIMESTAMP型の列です。タイムスタンプからlocaltimeを取得する

私は

| FROM_UNIXTIME(updated) | 
+------------------------+ 
| NULL     | 
| NULL     | 
| NULL     | 

なぜFROM_UNIXTIME作業を行うを取得していますselect FROM_UNIXTIME(updated) from pushinfo;

を使用する場合、私はselect updated from pushinfo;

は私が

+---------------------+ 
| updated    | 
+---------------------+ 
| 2017-04-11 15:33:46 | 
| 2017-04-11 15:35:02 | 
| 2017-04-12 10:15:54 | 
+---------------------+ 

を得るのですか?

私はこのクエリ

conn.query(' select updated from pushinfo') 

を使用する場合、私は、問題は何YYYY-MM-DDTHH:MM:SS.000Z のようなもののように更新取得していますか?

HH:MM:SS YYYY-MM-DDなどの形式で取得する方法は?

答えて

1

FROM_UNIXTIMEは、Unixのタイムスタンプパラメータ(つまり、Unix Epochからの秒数の整数)が必要です。 DATE_FORMAT()を使用する必要があります。これは、列がTIMESTAMPとして定義されていても、MySQLは値をタイムスタンプではなく日付として返します。これは、TIMESTAMP型の列に対するMySQLのデフォルト動作です。実際のタイムスタンプ値を取得するには、UNIX_TIMESTAMP()を使用する必要があります。

だからあなたのクエリがちょうどupdated列を選択したときに取得している何

conn.query(' select DATE_FORMAT(updated, "%H:%i:%s %Y-%m-%d") from pushinfo') 

のように行くだろうが、あなたのMySQLサーバのデフォルトの日付書式内のその列の値です。

質問のタイトルはそれ以外の部分とは関係ありません。あなたはUnixタイムスタンプから現地時間を得ることは決してありません。なぜなら、それは常にズールー時間(UTC)にあるからです。