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

MySQLで時間を秒に変換して合計する方法【TIME_TO_SEC活用術】

MySQLで時間データを扱う際、複数の時間を単純にSUM()で合計すると、正しい結果が得られないことがあります。そんなときに役立つのが、TIME_TO_SEC()関数とSEC_TO_TIME()関数の組み合わせです。

基本的な考え方はシンプルです。まずTIME_TO_SEC()で各時間を秒数に変換し、その合計値をSEC_TO_TIME()でもう一度「時:分:秒」形式に戻すことで、正確な合計時間を求められます。

手順1:サンプルテーブルを作成する

まず、時間型(TIME)のカラムを持つテーブルを作成しましょう。

mysql> create table DemoTable
-> (
-> ArrivalTime time
-> );
Query OK, 0 rows affected (0.63 sec)

手順2:レコードを挿入する

insertコマンドを使って、テーブルにレコードを追加していきます。

mysql> insert into DemoTable values('04:10:00');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable values('05:20:50');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values('06:40:10');
Query OK, 1 row affected (0.18 sec)

手順3:レコードを確認する

select文で、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

+-------------+
| ArrivalTime |
+-------------+
| 04:10:00 |
| 05:20:50 |
| 06:40:10 |
+-------------+
3 rows in set (0.00 sec)

時間の合計を計算するクエリ

以下が、MySQLで時間の合計を計算するためのクエリです。TIME_TO_SEC()で各レコードの時間を秒に変換し、SUM()で合計した後、SEC_TO_TIME()によって再び時間形式へ変換しています。

mysql> select SEC_TO_TIME( SUM( TIME_TO_SEC( ArrivalTime) ) ) from DemoTable;

出力結果

+-------------------------------------------------+
| SEC_TO_TIME( SUM( TIME_TO_SEC( ArrivalTime) ) ) |
+-------------------------------------------------+
| 16:11:00 |
+-------------------------------------------------+
1 row in set (0.00 sec)

まとめ

このように、TIME_TO_SEC()SEC_TO_TIME()を組み合わせることで、時間データの合計を簡単かつ正確に求めることができます。勤怠管理や作業時間の集計など、時間の加算が必要な場面でぜひ活用してください。

  1. MySQLでvarchar型の時刻データを正しい時間形式に変換する方法

    varchar型として保存された「1620」や「2345」のような時刻データを、実際の時間形式(例:04:20)に変換したい場合、MySQLのTIME_FORMAT()関数を使用することで実現できます。この記事では、SUBSTRING()とCONCAT()を組み合わせて、4桁の文字列を「時:分」の形式に整形する手順を解説します。1. サンプルテーブルの作成まず、到着時刻をvarchar型で格納するテーブルを作成します。mysql> create table DemoTable1591 -> ( -> ArrivalTime varchar(20) -&

  2. MySQLで今月のレコードを合計する方法【SUM()とMONTH()関数の使い方】

    MySQLで今月のレコードを合計する方法MySQLで今月のレコードを合計するには、SUM()関数とMONTH()関数を組み合わせて使用します。ここでは、サンプルテーブルを作成し、実際にデータを集計する手順を順番に解説します。1. テーブルを作成するまず、日付と金額を格納するテーブルを作成しましょう。mysql> create table DemoTable1889    (    DueDate date,    Amount int