MySQL クエリでタイムスタンプフィールドを日付に変換する
このチュートリアル記事では、MySQL クエリでタイムスタンプ
フィールドを日付フィールドに変換する方法を説明します。これは、データを適切にクエリするときにフォーマットを使用する方法を示しています。
日付形式を使用して MySQL のタイムスタンプ
を変換する
TIMESTAMP
データ型を使用すると、日付と時刻の両方を登録できます。1970 年 1 月 1 日の最初の 1 秒から 2038 年 1 月 19 日までの日付の範囲を正確に 3 時間 14 分 7 秒で有効にする 19 個の固定文字があります。
DATE_FORMAT
関数を使用すると、テーブルからフィールドを取得し、MySQL クエリで目的の形式に変換できます。以下は、operations
テーブルの値です。これにより、シャットダウンなどの運用イベントの詳細が工場で登録されます。
textCopy| shutdown |
| ------------------- |
| 2021-12-31 09:45:07 |
以下は、列 shutdown
を取得し、デフォルト形式 YYYY-MM-DD HH:MM:SS
のタイムスタンプ
から形式 DD-MM-YYYY
の日付に変換する変換の例です。
sqlCopyCREATE TABLE operations (
user TEXT NOT NULL,
shutdown TIMESTAMP
);
INSERT INTO operations VALUES ('Mark', '2021-12-31 09:45:07');
SELECT DATE_FORMAT(operations.shutdown, '%d %m %Y')
AS 'Shutdown Date'
FROM operations
出力:
textCopy| Shutdown Date |
|:--------------|
| 31 12 2021 |
時間、分、秒の値にそれぞれ%H
、%i
、%s
を含めることで、最終的な日付形式に時刻を含めることもできます。
sqlCopyCREATE TABLE operations (
user TEXT NOT NULL,
shutdown TIMESTAMP
);
INSERT INTO operations VALUES ('Mark', '2021-12-31 09:45:07');
SELECT DATE_FORMAT(operations.shutdown, '%d %m %Y %h%:%i%:%s')
AS 'Shutdown Date'
FROM operations
出力:
textCopy| Shutdown Date |
|:---------------------|
| 31 12 2021 09:45:07 |
%m
はすでに月次数値に割り当てられているため、%i
記号は数分間使用されます。
Unixtime
を使用して MySQL のタイムスタンプを変換する
タイムスタンプ
が適切な形式の場合、日付/時刻の形式 31 12 2021 09:45:07
は次のようになります:1640943907
。FROM_UNIXTIME
を使用して、数列を日付/時刻形式に変換できます。
sqlCopyCREATE TABLE operations (
user TEXT NOT NULL,
shutdown int(11)
);
INSERT INTO operations VALUES ('Mark', 1640943907);
SELECT DATE_FORMAT(FROM_UNIXTIME(operations.shutdown), '%d %m %Y %h%:%i%:%s')
AS 'Shutdown Date'
FROM operations
結果:
textCopy| Shutdown Date |
|:---------------------|
| 31 12 2021 09:45:07 |
上記のように、タイムスタンプは、FROM_UNIXTIME
を追加するだけで同じ形式に変換され、数列を目的の形式に変換しました。
MySQL で Cast を使用して Unixtime
を変換する
DATE_FORMAT
の代わりに CAST
を使用して、UNIXTIME
形式を日付に変換することもできます。
sqlCopyCREATE TABLE operations (
user TEXT NOT NULL,
shutdown int(11)
);
INSERT INTO operations VALUES ('Mark', 1640943907);
SELECT CAST(FROM_UNIXTIME(operations.shutdown)
AS DATE)
AS 'Shutdown Date'
FROM operations
出力:
textCopy| Shutdown Date |
|:--------------|
| 2021-12-31 |
ただし、この方法では、必要に応じて日付をフォーマットする機能が制限されるため、DATE_FORMAT
を使用することをお勧めします。