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

MySQL에서 두 열 값 사이의 시간 차이 계산하기 – TIMEDIFF와 TIME_FORMAT 완벽 가이드

MySQL에서 출근 시간(PunchIn)과 퇴근 시간(PunchOut)처럼 서로 다른 두 열에 저장된 datetime 값 사이의 시간 차이를 구해야 하는 경우가 자주 있습니다. 이럴 때 TIMEDIFF() 함수와 TIME_FORMAT() 함수를 함께 사용하면 원하는 형식으로 깔끔하게 결과를 얻을 수 있습니다.

핵심 함수 소개

  • TIMEDIFF(시간1, 시간2) : 두 시간 값의 차이를 계산하여 반환합니다.
  • TIME_FORMAT(시간, 형식) : 계산된 시간 값을 '%H hrs, %i min.' 같은 지정된 형식으로 변환해 줍니다.

1단계: 테이블 생성

먼저 예제로 사용할 테이블을 생성합니다.

mysql> create table DemoTable624 (PunchIn datetime, PunchOut datetime);
Query OK, 0 rows affected (0.60 sec)

2단계: 데이터 삽입

INSERT 명령어를 사용해 샘플 데이터를 입력합니다.

mysql> insert into DemoTable624 values('2019-07-14 12:10:00', '2019-07-14 12:50:00');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable624 values('2019-07-14 11:00:00', '2019-07-14 11:30:00');
Query OK, 1 row affected (0.34 sec)

3단계: 전체 데이터 조회

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable624;

실행 결과는 다음과 같습니다.

+---------------------+---------------------+
| PunchIn | PunchOut |
+---------------------+---------------------+
| 2019-07-14 12:10:00 | 2019-07-14 12:50:00 |
| 2019-07-14 11:00:00 | 2019-07-14 11:30:00 |
+---------------------+---------------------+
2 rows in set (0.00 sec)

4단계: 시간 차이 조회 쿼리 실행

이제 TIMEDIFF()와 TIME_FORMAT()을 조합하여 두 열 사이의 시간 차이를 '시간, 분' 형태로 출력하는 쿼리를 실행합니다.

mysql> select time_format(timediff(PunchIn,PunchOut),'%H hrs, %i min.') from DemoTable624;

결과는 아래와 같습니다.

+-----------------------------------------------------------+
| time_format(timediff(PunchIn,PunchOut),'%H hrs, %i min.') |
+-----------------------------------------------------------+
| -00 hrs, 40 min. |
| -00 hrs, 30 min. |
+-----------------------------------------------------------+
2 rows in set (0.00 sec)

참고 사항

위 예제에서 결과 앞에 마이너스(-) 기호가 붙은 것을 확인할 수 있습니다. 이는 PunchIn에서 PunchOut을 뺐기 때문입니다. 즉, 인자 순서가 반대로 전달되면 음수 값이 반환됩니다. 일반적으로 근무 시간처럼 '퇴근 시간 - 출근 시간'을 구하려면 timediff(PunchOut, PunchIn)처럼 인자 순서를 바꿔주면 양수 값으로 올바르게 계산됩니다.