Unixのタイムスタンプを人間が読める日付に変換するために使用できるMySQL関数はありますか?私はUnix時間を節約するためのフィールドを1つ持っていますが、今度は人間が読める日付用に別のフィールドを追加したいと思います。
FROM_UNIXTIME()
を使う:
SELECT
FROM_UNIXTIME(timestamp)
FROM
your_table;
MySQLのドキュメントFROM_UNIXTIME()
も参照してください。
他の答え(この記事の執筆時点で)から欠けていて、直接明白ではないのは、 from_unixtime
がそのようにフォーマットを指定するために2番目のパラメータを取ることができるということです。
SELECT
from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM
your_table
探しているものは FROM_UNIXTIME()
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への変換です。
読み取り可能としてフィールドを保存するのは面倒なのはなぜですか。 AS
だけ
SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
FROM theTable
WHERE theTable.theField = theValue;
編集:申し訳ありませんが、秒単位ではなくミリ秒単位ですべての情報を保存しています。それを修正しました。
DATE_FORMAT関数を使用することができます。 ここ の例と、さまざまな日付コンポーネントを選択するために使用できるパターンを含むページです。
私はこの質問に気付いていないと思ったので、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回実行します。
簡単で簡単な方法:
select from_unixtime(column_name, '%Y-%m-%d') from table_name