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

MySQL에서 TIME_TO_SEC() 함수로 시간을 초 단위로 변환해 합산하는 방법

MySQL에서 여러 시간 값을 합산할 때, TIME 타입 그대로 SUM() 함수를 적용하면 원하는 결과를 얻기 어렵습니다. 이럴 때 TIME_TO_SEC() 함수로 시간을 초 단위로 변환한 뒤 합산하고, 다시 SEC_TO_TIME() 함수로 시간 형식으로 되돌리는 방법이 가장 효과적입니다.

1. 예제 테이블 생성

먼저 시간 값을 저장할 테이블을 생성합니다.

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)

4. 시간 합산 쿼리 실행

다음은 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)

결과를 보면 04:10:00, 05:20:50, 06:40:10 세 값의 합인 16:11:00이 정확하게 계산된 것을 확인할 수 있습니다. 이 방법을 활용하면 근무 시간 누계, 로그 처리 시간 집계 등 다양한 상황에서 시간 데이터를 손쉽게 합산할 수 있습니다.