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';を実行しておくとよいでしょう。
-
VARCHARデータをMySQLの日付形式に変換する方法
VARCHAR型の日付文字列をDATE型に変換するにはMySQLでは、VARCHAR型として保存されている日付データを正式な日付形式に変換する場合、STR_TO_DATE() 関数を使用します。この関数は、文字列と書式指定子(フォーマット指定子)を組み合わせることで、任意の形式の文字列を日付値へと変換できる便利な機能です。以下、具体的な手順をサンプルとともに解説します。1. サンプルテーブルの作成まず、VARCHAR型のカラムを持つテーブルを作成します。mysql> create table DemoTable1989 ( DueDate varchar(20)
-
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文を使って、「日/月/年 時:分:秒」