Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 초 단위로 시간을 계산하는 방법 – TIME_TO_SEC와 SEC_TO_TIME 활용

MySQL에서 초를 기준으로 시간 계산하기

MySQL에서는 TIME_TO_SEC() 함수와 SEC_TO_TIME() 함수를 조합하면 여러 시간(TIME) 값을 초 단위로 변환한 뒤 합산하고, 그 결과를 다시 '시:분:초' 형식으로 손쉽게 계산할 수 있습니다.

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. 초 단위로 시간 합계 계산하기

아래 쿼리는 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)

동작 원리 정리

  • TIME_TO_SEC(Logouttime): '05:50:00', '06:10:10', '08:00:50'을 각각 초 단위 숫자(21000초, 22210초, 28850초)로 변환합니다.
  • SUM(...): 변환된 초 값을 모두 더해 총 72,060초를 구합니다.
  • SEC_TO_TIME(...): 합산된 초 값을 다시 '20:01:00' 형태의 시간으로 변환합니다.

이처럼 두 함수를 함께 사용하면 24시간을 넘는 누적 시간도 정확하게 계산할 수 있어, 로그아웃 시간 누계나 근무 시간 집계 등 실무에서 유용하게 활용할 수 있습니다.