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

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時間を超える合計時間も正しく表示できるため、勤怠管理やアクセスログの集計など、時間の累計を扱う場面で非常に便利です。ぜひ実際のプロジェクトでも活用してみてください。

  1. MySQLでDATETIME型の日時に日数を追加する方法

    MySQLでは、DATE_ADD()関数を使うことで、DATETIME型の値に指定した日数を簡単に追加できます。この記事では、実際にテーブルを作成し、日時フィールドに日数を加算するまでの手順を具体例とともに解説します。 1. テーブルの作成 まず、DATETIME型のカラムを持つテーブルを作成します。 mysql> create table DemoTable1871     (     ArrivalDate datetime     ); Query OK, 0

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