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


222

Unixタイムスタンプを人間が読める日付に変換するために使用できるMySQL関数はありますか?Unixの時間を保存する1つのフィールドがあり、人間が読める日付用に別のフィールドを追加したい


1
mySQLマニュアルの日付および時刻関数
Pekka

回答:



108

(この記事の執筆時点で)他の回答に欠けていて、直接明らかではないのはfrom_unixtime、次のような形式を指定する2番目のパラメーターを取ることができることです。

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

20
非常に小さな問題ですが、%hは12時間形式の時間であり、完全性(AM / PM)を得るには%pが必要です。または、%Hは24時間形式で時間を示します。
tlum、


19

特定のタイムゾーンの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に変換されます。


7

なぜフィールドを読み取り可能として保存する必要があるのですか?私たちだけAS

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

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


4

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



1

私はこの質問に気付いていないので、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回実行します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.