MySQLで合計時間を計算する方法|SEC_TO_TIME()関数の使い方を解説
MySQLで合計時間を計算する方法
MySQLで複数の時間データの合計(総時間)を求めるには、SEC_TO_TIME() 関数と TIME_TO_SEC() 関数を組み合わせて使用します。TIME型のカラムはそのまま SUM() で正しく集計できないため、一度秒数に変換して合計を取った後、再び時間形式に戻すのがポイントです。
ここでは、サンプルテーブルを作成しながら、実際に合計時間を計算する手順を順番に見ていきましょう。
1. サンプルテーブルを作成する
まず、ログイン時間を保存するテーブルを作成します。
mysql> create table AddTotalTimeDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> LoginTime time
-> );
Query OK, 0 rows affected (0.63 sec)
2. レコードを挿入する
INSERT文を使って、テーブルにいくつかのレコードを追加します。
mysql> insert into AddTotalTimeDemo(LoginTime) values('05:05:00');
Query OK, 1 row affected (0.10 sec)
mysql> insert into AddTotalTimeDemo(LoginTime) values('07:20:00');
Query OK, 1 row affected (0.16 sec)
mysql> insert into AddTotalTimeDemo(LoginTime) values('02:05:00');
Query OK, 1 row affected (0.17 sec)
mysql> insert into AddTotalTimeDemo(LoginTime) values('03:03:00');
Query OK, 1 row affected (0.25 sec)
mysql> insert into AddTotalTimeDemo(LoginTime) values('05:07:00');
Query OK, 1 row affected (0.11 sec)3. テーブルの内容を確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from AddTotalTimeDemo;
実行結果は以下の通りです。
+----+-----------+
| Id | LoginTime |
+----+-----------+
| 1 | 05:05:00 |
| 2 | 07:20:00 |
| 3 | 02:05:00 |
| 4 | 03:03:00 |
| 5 | 05:07:00 |
+----+-----------+
5 rows in set (0.00 sec)
4. 合計時間を計算するクエリ
MySQLで合計時間を求めるクエリは以下の通りです。TIME_TO_SEC() で各レコードの時間を秒に変換し、SUM() で合計した後、SEC_TO_TIME() で時間形式に戻しています。
mysql> SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(LoginTime))) AS TotalTime from AddTotalTimeDemo;
実行結果:
+-----------+
| TotalTime |
+-----------+
| 22:40:00 |
+-----------+
1 row in set (0.00 sec)
5件のレコード(05:05:00 + 07:20:00 + 02:05:00 + 03:03:00 + 05:07:00)の合計である「22:40:00」が正しく取得できました。
まとめ
MySQLでTIME型の合計時間を計算する場合は、「TIME_TO_SEC() → SUM() → SEC_TO_TIME()」という流れが基本となります。この方法なら24時間を超える合計時間も正しく表示できるため、勤怠管理やアクセスログの集計など、時間の累計を扱う場面で非常に便利です。ぜひ実際のプロジェクトでも活用してみてください。
-
MySQLでDATETIME型の日時に日数を追加する方法
MySQLでは、DATE_ADD()関数を使うことで、DATETIME型の値に指定した日数を簡単に追加できます。この記事では、実際にテーブルを作成し、日時フィールドに日数を加算するまでの手順を具体例とともに解説します。 1. テーブルの作成 まず、DATETIME型のカラムを持つテーブルを作成します。 mysql> create table DemoTable1871 ( ArrivalDate datetime ); Query OK, 0
-
MySQLで現在の日付に11日を追加する方法【DATE_ADD関数の使い方】
はじめにMySQLでは、DATE_ADD()関数を使うことで、日付に指定した日数を簡単に加算できます。本記事では、現在の日付(CURDATE())に11日を追加する方法を、テーブル作成からクエリ実行まで具体的な例を交えて解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1994 ( ArrivalDate date ); Query OK, 0 rows affected (5.33 sec)テストデータの挿入続いて、INSERTコマンドを使用してテーブルに複数のレコードを挿入します。mysql&g