MySQLでINT型をDATETIME型に変換する方法
MySQLでは、組み込み関数 FROM_UNIXTIME() を使用することで、INT型(Unixタイムスタンプ)をDATETIME型に簡単に変換できます。Unixタイムスタンプは「1970年1月1日00:00:00 UTC」からの経過秒数を表す数値であり、これを人間が読める日付形式に変換する際に非常に便利です。
基本構文
変換の基本構文は以下の通りです。
SELECT FROM_UNIXTIME(カラム名, '%Y-%m-%d') AS 任意の別名 FROM テーブル名;
第2引数のフォーマット指定子(%Y-%m-%d など)は省略可能で、省略した場合は「YYYY-MM-DD HH:MM:SS」形式で日付と時刻の両方が返されます。
サンプルテーブルの作成
それでは、実際に動作を確認してみましょう。まずはテスト用のテーブルを作成します。
mysql> create table IntToDateDemo -> ( -> Number int -> ); Query OK, 0 rows affected (0.59 sec)
データの挿入
次に、INSERTコマンドを使ってUnixタイムスタンプのレコードをいくつか挿入します。
mysql> truncate table IntToDateDemo; Query OK, 0 rows affected (4.11 sec) mysql> insert into IntToDateDemo values(1545284721); Query OK, 1 row affected (0.19 sec) mysql> insert into IntToDateDemo values(1576820738); Query OK, 1 row affected (0.19 sec) mysql> insert into IntToDateDemo values(1513748752); Query OK, 1 row affected (0.24 sec) mysql> insert into IntToDateDemo values(1671515204); Query OK, 1 row affected (0.18 sec)
登録データの確認
SELECT文ですべてのレコードを表示して確認しましょう。
mysql> select * from IntToDateDemo;
実行結果:
+------------+ | Number | +------------+ | 1545284721 | | 1576820738 | | 1513748752 | | 1671515204 | +------------+ 4 rows in set (0.00 sec)
FROM_UNIXTIME()で変換を実行
ここで、FROM_UNIXTIME() 関数を使ってINT型をDATETIME型に変換するクエリを実行します。
mysql> select from_unixtime(Number, '%Y-%m-%d') as DateDemo from IntToDateDemo;
実行結果は以下の通りです。Unixタイムスタンプが「YYYY-MM-DD」形式の日付に変換されていることがわかります。
+------------+ | DateDemo | +------------+ | 2018-12-20 | | 2019-12-20 | | 2017-12-20 | | 2022-12-20 | +------------+ 4 rows in set (0.00 sec)
補足:時刻も含めて表示したい場合
日付だけでなく時刻も表示したい場合は、フォーマット指定子を '%Y-%m-%d %H:%i:%s' とするか、第2引数を省略します。
mysql> select from_unixtime(Number) as DateDemo from IntToDateDemo;
このように、FROM_UNIXTIME() 関数を使えば、INT型のUnixタイムスタンプを目的の日付・時刻形式に柔軟に変換できます。ログデータやAPIから取得したタイムスタンプの整形など、実務でも頻繁に活用されるテクニックです。
-
MySQLで日時(DATETIME)を変換して月名を取得する方法
MySQLで日時(DATETIME)から月の名前だけを取得したい場合は、DATE_FORMAT()関数を使用します。月名のみを取得するための基本構文は以下の通りです。select date_format(yourColumnName,%M %Y) from yourTableName;%Mは月の完全な英語名(例:October)、%Yは4桁の年を表す書式指定子です。この2つを組み合わせることで、「October 2019」のような形式で結果を取得できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1619
-
MySQLでタイムスタンプを月に変換するクエリの書き方
タイムスタンプを月に変換する基本構文MySQLでタイムスタンプ(UNIXタイムスタンプ)を月に変換するには、FROM_UNIXTIME()関数とMONTH()関数を組み合わせて使用します。基本的な構文は以下の通りです。select month(from_unixtime(yourColumnName)) from yourTableName;FROM_UNIXTIME()関数がUNIXタイムスタンプを日時形式に変換し、その結果に対してMONTH()関数を適用することで、月の数値(1〜12)を取得できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> cr