MySQLで秒数をもとに時間を計算する方法をわかりやすく解説
MySQLでは、TIME_TO_SEC()関数とSEC_TO_TIME()関数を組み合わせることで、時間データを秒単位に変換して集計し、その結果を再び時刻形式で取得できます。特に、複数の時刻の合計など、24時間を超える可能性がある計算を行う場合に非常に便利です。ここでは、実際にテーブルを作成しながら手順を確認していきましょう。
1. サンプルテーブルの作成
まず、TIME型のカラムを持つテーブルを作成します。
mysql> create table DemoTable ( Logouttime time ); Query OK, 0 rows affected (0.62 sec)
2. レコードの挿入
続いて、INSERT文を使っていくつかのデータを登録します。
mysql> insert into DemoTable values('5:50:00');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('6:10:10');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('8:00:50');
Query OK, 1 row affected (0.14 sec)
3. 登録データの確認
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+------------+ | Logouttime | +------------+ | 05:50:00 | | 06:10:10 | | 08:00:50 | +------------+ 3 rows in set (0.00 sec)
4. 秒単位で時間を計算するクエリ
以下が、MySQLで秒に基づいて時間を計算(合計)するためのクエリです。TIME_TO_SEC()で各時刻を秒数に変換し、SUM()で合計した後、SEC_TO_TIME()で時刻形式に戻しています。
mysql> select sec_to_time(sum(time_to_sec(Logouttime))) from DemoTable;
実行結果:
+-------------------------------------------+ | sec_to_time(sum(time_to_sec(Logouttime))) | +-------------------------------------------+ | 20:01:00 | +-------------------------------------------+ 1 row in set (0.80 sec)
処理の流れを解説
各レコードを秒に変換すると、「05:50:00」は21,000秒、「06:10:10」は22,210秒、「08:00:50」は28,850秒となり、合計は72,060秒になります。これをSEC_TO_TIME()で時刻形式に変換すると「20:01:00」という結果が得られます。
このように、一度秒単位を経由することで、TIME型同士を直接加算したときに発生しがちな桁あふれや誤った表示を避け、24時間を超える時間の合計も正確に計算できます。勤怠管理やログ時間の集計など、実務でも幅広く活用できるテクニックなので、ぜひ覚えておきましょう。
-
MySQLでvarchar型の時刻データを正しい時間形式に変換する方法
varchar型として保存された「1620」や「2345」のような時刻データを、実際の時間形式(例:04:20)に変換したい場合、MySQLのTIME_FORMAT()関数を使用することで実現できます。この記事では、SUBSTRING()とCONCAT()を組み合わせて、4桁の文字列を「時:分」の形式に整形する手順を解説します。1. サンプルテーブルの作成まず、到着時刻をvarchar型で格納するテーブルを作成します。mysql> create table DemoTable1591 -> ( -> ArrivalTime varchar(20) -&
-
Excelで時間差を計算する方法|####エラーとAM/PM表示を解決するコツ
Microsoft Excelは、予算管理や税額計算など、幅広い用途に活用できる強力な表計算ソフトです。豊富な機能を活かせば、電卓代わりとしても使えます。さらに、Excelでは2つの時刻の差(時間差)を計算することも可能です。たとえば、従業員の勤務開始時刻と終了時刻から実際の勤務時間を算出したり、勤務時間の記録を一元管理して給与や賃金の計算に役立てたりできます。 「時間差の計算なら、終了時刻から開始時刻を引くだけだから簡単」と思うかもしれません。しかし、単純に引き算を実行すると、2つの問題に直面します。この記事では、その問題点と具体的な解決方法をわかりやすく解説します。 Excelで時間差を