MySQLで分単位のINT数値をTIME型に変換する方法(SEC_TO_TIME関数の使い方)
MySQLでは、分単位のINT型の数値をTIME型に変換したい場面があります。例えば、作業時間や経過時間を「分数」として保存しているデータを、時刻形式(HH:MM:SS)で表示したいケースなどが該当します。
このような変換を行うには、SEC_TO_TIME() 関数を使用します。SEC_TO_TIME() は秒数をTIME型に変換する関数なので、分の値に60を掛けて秒に変換してから渡すのがポイントです。
基本構文
SELECT SEC_TO_TIME(カラム名 * 60) AS `別名` FROM テーブル名;
サンプルテーブルの作成
それでは、実際に動作を確認してみましょう。まずはテスト用のテーブルを作成します。
mysql> CREATE TABLE convertNumberToMinute
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> NumberToMinute int
-> );
Query OK, 0 rows affected (0.79 sec)次に、INSERT文を使ってサンプルデータを挿入します。
mysql> INSERT INTO convertNumberToMinute(NumberToMinute) VALUES(60); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO convertNumberToMinute(NumberToMinute) VALUES(70); Query OK, 1 row affected (0.21 sec) mysql> INSERT INTO convertNumberToMinute(NumberToMinute) VALUES(80); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO convertNumberToMinute(NumberToMinute) VALUES(90); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO convertNumberToMinute(NumberToMinute) VALUES(100); Query OK, 1 row affected (0.22 sec) mysql> INSERT INTO convertNumberToMinute(NumberToMinute) VALUES(110); Query OK, 1 row affected (0.07 sec) mysql> INSERT INTO convertNumberToMinute(NumberToMinute) VALUES(120); Query OK, 1 row affected (0.15 sec)
SELECT文ですべてのレコードを確認しておきましょう。
mysql> SELECT * FROM convertNumberToMinute;
実行結果は以下の通りです。
+----+----------------+ | Id | NumberToMinute | +----+----------------+ | 1 | 60 | | 2 | 70 | | 3 | 80 | | 4 | 90 | | 5 | 100 | | 6 | 110 | | 7 | 120 | +----+----------------+ 7 rows in set (0.00 sec)
SEC_TO_TIME()で分をTIME型に変換する
ここからが本題です。分単位の数値をTIME型に変換するには、以下のようにクエリを実行します。
mysql> SELECT SEC_TO_TIME(NumberToMinute*60) AS `MinuteDemo` FROM convertNumberToMinute;
実行結果:
+------------+ | MinuteDemo | +------------+ | 01:00:00 | | 01:10:00 | | 01:20:00 | | 01:30:00 | | 01:40:00 | | 01:50:00 | | 02:00:00 | +------------+ 7 rows in set (0.00 sec)
60分は「01:00:00」、120分は「02:00:00」と正しく変換されていることがわかります。
元のカラムと変換結果を並べて表示する
元の「NumberToMinute」カラムと変換後のTIME型の値を同時に表示することも可能です。
mysql> SELECT NumberToMinute, SEC_TO_TIME(NumberToMinute*60) AS `MinuteDemo` FROM convertNumberToMinute;
実行結果:
+----------------+------------+ | NumberToMinute | MinuteDemo | +----------------+------------+ | 60 | 01:00:00 | | 70 | 01:10:00 | | 80 | 01:20:00 | | 90 | 01:30:00 | | 100 | 01:40:00 | | 110 | 01:50:00 | | 120 | 02:00:00 | +----------------+------------+ 7 rows in set (0.00 sec)
まとめ
MySQLで分単位のINT型の数値をTIME型に変換するには、SEC_TO_TIME(カラム名 * 60) を使用します。SEC_TO_TIME() の引数は秒単位であるため、分の値に60を掛けることを忘れないようにしましょう。この方法を使えば、分数データを時刻形式で簡単に表示・集計できます。
-
PHP変数「11:00 AM」をMySQLの時間形式に変換する方法
PHPの「11:00 AM」をMySQLの時間形式に変換する方法 MySQLのTIME型やDATETIME型は、時刻を24時間表記の「HH:MM:SS」形式で管理します。そのため、「11:00 AM」のようにAM/PMを含む文字列をデータベースに保存する場合は、事前に形式を変換しておく必要があります。本記事では、PHP標準のDateTimeクラスを使った変換方法を、サンプルコードと実行結果付きで解説します。 変換の基本の流れ DateTime::createFromFormat() … 入力文字列をDateTimeオブジェクトとして解析する format() … 解析結果を「H:i:s」(2
-
MySQLのDATE_FORMAT関数でタイムスタンプから月番号を取得する方法
MySQLでタイムスタンプ型のカラムから「月の番号だけ」を取り出したい場合、DATE_FORMAT() 関数を使うのが便利です。書式指定子 %m を指定することで、01〜12の形式で月番号を文字列として取得できます。この記事では、実際にテーブルを作成し、データを登録して、月番号を抽出するまでの一連の手順をサンプルコード付きで解説します。1. サンプルテーブルの作成まず、TIMESTAMP型のカラムを持つテーブルを作成します。mysql> create table DemoTable1999 ( ArrivalDate timestamp ); Query OK,