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

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から取得したタイムスタンプの整形など、実務でも頻繁に活用されるテクニックです。

  1. 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

  2. MySQLでタイムスタンプを月に変換するクエリの書き方

    タイムスタンプを月に変換する基本構文MySQLでタイムスタンプ(UNIXタイムスタンプ)を月に変換するには、FROM_UNIXTIME()関数とMONTH()関数を組み合わせて使用します。基本的な構文は以下の通りです。select month(from_unixtime(yourColumnName)) from yourTableName;FROM_UNIXTIME()関数がUNIXタイムスタンプを日時形式に変換し、その結果に対してMONTH()関数を適用することで、月の数値(1〜12)を取得できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> cr