MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでUnixタイムスタンプを日付形式に変換する方法

MySQLでは、bigint型などで保存されたUnixタイムスタンプ(エポック秒)を、人が読みやすい日付形式に変換できます。そのためには、from_unixtime()関数とdate_format()関数を組み合わせて使用します。

基本構文

SELECT DATE_FORMAT(FROM_UNIXTIME(カラム名), '%b %d, %Y %l:%i %p PDT') FROM テーブル名;

この構文では、まずFROM_UNIXTIME()がUnixタイムスタンプをDATETIME型に変換し、続いてDATE_FORMAT()が指定したフォーマット文字列に従って日付を整形します。フォーマット指定子の意味は以下のとおりです。

  • %b: 月の省略形(Jan、Febなど)
  • %d: 日(2桁表示)
  • %Y: 4桁の年
  • %l: 時(12時間制)
  • %i: 分
  • %p: AMまたはPM

動作確認用テーブルの作成

実際に構文を理解するために、サンプルテーブルを作成しましょう。テーブル作成クエリは次のとおりです。

mysql> CREATE TABLE unixTimeStampFormatDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> MyTimeStampValue bigint
    -> );
Query OK, 0 rows affected (0.59 sec)

レコードの挿入

INSERTコマンドを使って、いくつかのUnixタイムスタンプを登録します。

mysql> INSERT INTO unixTimeStampFormatDemo(MyTimeStampValue) VALUES(1334428200);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO unixTimeStampFormatDemo(MyTimeStampValue) VALUES(1513881000);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO unixTimeStampFormatDemo(MyTimeStampValue) VALUES(1542738600);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO unixTimeStampFormatDemo(MyTimeStampValue) VALUES(1551637800);
Query OK, 1 row affected (0.15 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> SELECT * FROM unixTimeStampFormatDemo;

実行結果は以下のとおりです。

+----+------------------+
| Id | MyTimeStampValue |
+----+------------------+
|  1 | 1334428200       |
|  2 | 1513881000       |
|  3 | 1542738600       |
|  4 | 1551637800       |
+----+------------------+
4 rows in set (0.00 sec)

Unixタイムスタンプを日付形式に変換するクエリ

それでは、保存されたUnixタイムスタンプを読みやすい日時形式に変換してみます。

mysql> SELECT DATE_FORMAT(FROM_UNIXTIME(MyTimeStampValue), '%b %d, %Y %l:%i %p PDT') FROM unixTimeStampFormatDemo;

実行結果は以下のとおりです。

+-----------------------------------------------------------------------+
| DATE_FORMAT(FROM_UNIXTIME(MyTimeStampValue), '%b %d, %Y %l:%i %p PDT') |
+-----------------------------------------------------------------------+
| Apr 15, 2012 12:00 AM PDT                                             |
| Dec 22, 2017 12:00 AM PDT                                             |
| Nov 21, 2018 12:00 AM PDT                                             |
| Mar 04, 2019 12:00 AM PDT                                             |
+-----------------------------------------------------------------------+
4 rows in set (0.00 sec)

このように、FROM_UNIXTIME()DATE_FORMAT()を組み合わせることで、数値だけのUnixタイムスタンプを「Apr 15, 2012 12:00 AM PDT」のような見やすい形式に変換できます。なお、サンプル出力ではタイムゾーンとしてPDT(太平洋夏時間)を表記していますが、実際の変換結果はサーバーのタイムゾーン設定に依存する点に注意してください。日本時間で表示したい場合は、あらかじめSET time_zone = '+09:00';を実行しておくとよいでしょう。

  1. VARCHARデータをMySQLの日付形式に変換する方法

    VARCHAR型の日付文字列をDATE型に変換するにはMySQLでは、VARCHAR型として保存されている日付データを正式な日付形式に変換する場合、STR_TO_DATE() 関数を使用します。この関数は、文字列と書式指定子(フォーマット指定子)を組み合わせることで、任意の形式の文字列を日付値へと変換できる便利な機能です。以下、具体的な手順をサンプルとともに解説します。1. サンプルテーブルの作成まず、VARCHAR型のカラムを持つテーブルを作成します。mysql> create table DemoTable1989 ( DueDate varchar(20)

  2. MySQLで日付形式を変換する方法|STR_TO_DATE()関数の使い方を解説

    MySQLでは、VARCHAR型などで保存された文字列の日付データを、正しい日付・時刻形式に変換したいケースがよくあります。そんなときに活躍するのが STR_TO_DATE() 関数です。この記事では、実際のSQL例とともに具体的な使い方を解説します。サンプルテーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable2010 ( DueDate varchar(20) ); Query OK, 0 rows affected (0.68 sec)テストデータの挿入INSERT文を使って、「日/月/年 時:分:秒」