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

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を掛けることを忘れないようにしましょう。この方法を使えば、分数データを時刻形式で簡単に表示・集計できます。

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

  2. MySQLのDATE_FORMAT関数でタイムスタンプから月番号を取得する方法

    MySQLでタイムスタンプ型のカラムから「月の番号だけ」を取り出したい場合、DATE_FORMAT() 関数を使うのが便利です。書式指定子 %m を指定することで、01〜12の形式で月番号を文字列として取得できます。この記事では、実際にテーブルを作成し、データを登録して、月番号を抽出するまでの一連の手順をサンプルコード付きで解説します。1. サンプルテーブルの作成まず、TIMESTAMP型のカラムを持つテーブルを作成します。mysql> create table DemoTable1999 ( ArrivalDate timestamp ); Query OK,