MySQLで日時(DATETIME)を整数に変換する方法|UNIX_TIMESTAMP()関数の使い方を解説
MySQLでDATETIME型を整数に変換するには?
MySQLでは、UNIX_TIMESTAMP()関数を使うことで、DATETIME型の日時データを整数(UNIXタイムスタンプ)に変換できます。UNIXタイムスタンプとは、1970年1月1日00:00:00 UTCからの経過秒数を表す数値です。
基本的な構文は以下のとおりです。
SELECT UNIX_TIMESTAMP(yourDatetimeColumnName) AS anyVariableName FROM yourTableName;
サンプルテーブルを作成する
それでは、実際に動作を確認するためのテーブルを作成しましょう。テーブル作成のクエリは次のとおりです。
mysql> CREATE TABLE DatetimeToInteger
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> ArrivalTime datetime,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.94 sec)
Idは自動採番される主キー、ArrivalTimeが変換対象となるDATETIME型のカラムです。
テストデータを挿入する
INSERTコマンドを使って、いくつかのレコードを登録します。さまざまな形式の日時を試してみましょう。
mysql> INSERT INTO DatetimeToInteger(ArrivalTime) VALUES(now());
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DatetimeToInteger(ArrivalTime) VALUES(curdate());
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DatetimeToInteger(ArrivalTime) VALUES('2017-09-21 13:10:55');
Query OK, 1 row affected (0.25 sec)
mysql> INSERT INTO DatetimeToInteger(ArrivalTime) VALUES(date_add(now(), INTERVAL 3 year));
Query OK, 1 row affected (0.16 sec)
ここでは、現在日時を返すnow()、当日の日付のみを返すcurdate()、文字列で指定した日時、さらに3年後の日時を返すdate_add()を使用しています。
登録されたレコードを確認する
SELECT文ですべてのレコードを表示します。
mysql> SELECT * FROM DatetimeToInteger;
実行結果は以下のとおりです。
+----+---------------------+ | Id | ArrivalTime | +----+---------------------+ | 1 | 2019-01-22 15:12:45 | | 2 | 2019-01-22 00:00:00 | | 3 | 2017-09-21 13:10:55 | | 4 | 2022-01-22 15:14:32 | +----+---------------------+ 4 rows in set (0.00 sec)
DATETIMEを整数に変換するクエリ
いよいよ、UNIX_TIMESTAMP()関数を使ってDATETIME型を整数に変換します。クエリは以下のとおりです。
mysql> SELECT unix_timestamp(ArrivalTime) AS DateTimeToIntegerDemo FROM DatetimeToInteger;
実行結果:
+-----------------------+ | DateTimeToIntegerDemo | +-----------------------+ | 1548150165 | | 1548095400 | | 1505979655 | | 1642844672 | +-----------------------+ 4 rows in set (0.00 sec)
このように、各日時が対応するUNIXタイムスタンプ(整数値)に変換されていることが確認できます。たとえば「2019-01-22 15:12:45」は「1548150165」に変換されています。
補足:逆に整数からDATETIMEへ戻すには
変換したタイムスタンプを再び日時に戻したい場合は、FROM_UNIXTIME()関数を使用します。
SELECT FROM_UNIXTIME(1548150165);
このクエリを実行すると、「2019-01-22 15:12:45」という日時が返されます。UNIX_TIMESTAMP()とFROM_UNIXTIME()は互いに逆の変換を行う関数なので、セットで覚えておくと便利です。
-
MySQLクエリでLONGTEXT型の値を整数として扱う方法
はじめに MySQLでは、LONGTEXT型のカラムに格納された数値は文字列として扱われるため、ORDER BYで並べ替えると辞書順(文字列順)にソートされてしまいます。例えば「9」で始まる大きな桁数の数字が、実際の数値としては小さくても先頭に来るといった問題が発生します。 この記事では、LONGTEXT型の値を整数として評価し、正しく数値順にソートする方法を解説します。 1. サンプルテーブルの作成 まず、LONGTEXT型のカラムを持つテーブルを作成します。 mysql> create table DemoTable -> ( -> Value long
-
MySQLでDATETIME型の日時に日数を追加する方法
MySQLでは、DATE_ADD()関数を使うことで、DATETIME型の値に指定した日数を簡単に追加できます。この記事では、実際にテーブルを作成し、日時フィールドに日数を加算するまでの手順を具体例とともに解説します。 1. テーブルの作成 まず、DATETIME型のカラムを持つテーブルを作成します。 mysql> create table DemoTable1871 ( ArrivalDate datetime ); Query OK, 0