web-dev-qa-db-ja.com

MySQLを使用してUnixのタイムスタンプを人間が読める日付に変換する

Unixのタイムスタンプを人間が読める日付に変換するために使用できるMySQL関数はありますか?私はUnix時間を節約するためのフィールドを1つ持っていますが、今度は人間が読める日付用に別のフィールドを追加したいと思います。

188
King Julien

FROM_UNIXTIME() を使う:

SELECT
  FROM_UNIXTIME(timestamp) 
FROM 
  your_table;

MySQLのドキュメントFROM_UNIXTIME() も参照してください。

335
CristiC

他の答え(この記事の執筆時点で)から欠けていて、直接明白ではないのは、 from_unixtime がそのようにフォーマットを指定するために2番目のパラメータを取ることができるということです。

SELECT
  from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM 
  your_table
93
User

探しているものは FROM_UNIXTIME()

31
Ted Hopp

特定のタイムゾーンにunixタイムスタンプが必要ですか?

Mysqlのcliにすばやくアクセスできる場合は、ここに1つのライナーがあります。

mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';

+---------------------+
| local time          |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+

'MST'を希望のタイムゾーンに置き換えます。私はアリゾナに住んでいますか?したがって、UTCからMSTへの変換です。

18

読み取り可能としてフィールドを保存するのは面倒なのはなぜですか。 ASだけ

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;

編集:申し訳ありませんが、秒単位ではなくミリ秒単位ですべての情報を保存しています。それを修正しました。

6
josh.trow

DATE_FORMAT関数を使用することができます。 ここ の例と、さまざまな日付コンポーネントを選択するために使用できるパターンを含むページです。

4
Briguy37

私はこの質問に気付いていないと思ったので、mysqlは常にUTCのタイムスタンプフィールドに時間を保存しますが、現地のタイムゾーンで表示します(例えばphpmyadmin)私の発見を追加したいと思います。

次のように定義された、自動的に更新されるlast_modifiedフィールドがあります。

`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Phpmyadminで見ると、現地時間のように見えます。内部的にはUTCです。

SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`

どの星座でも、UNIX_TIMESTAMPと 'as UTC'は常にUTC時間で表示されます。

最初にtime_zoneを設定せずにこれを2回実行します。

0

簡単で簡単な方法:

select from_unixtime(column_name, '%Y-%m-%d') from table_name

0
Akash gupta