MySQL에서 두 날짜·시간 값 사이의 차이를 초 단위로 계산해야 하는 경우가 자주 있습니다. 예를 들어 작업 처리 시간 측정, 로그 분석, 세션 지속 시간 계산 등이 대표적입니다. 이번 글에서는 두 타임스탬프의 차이를 초 단위로 구하는 두 가지 방법을 소개합니다.
방법 1: TIMESTAMPDIFF() 함수 사용
TIMESTAMPDIFF() 함수는 두 날짜·시간 값 사이의 차이를 지정한 단위(초, 분, 시간 등)로 반환하는 가장 직관적인 방법입니다. 첫 번째 인자에 단위를, 두 번째 인자에 시작 시각, 세 번째 인자에 종료 시각을 순서대로 입력합니다.
다음은 두 타임스탬프의 차이를 초 단위로 계산하는 쿼리입니다.
mysql> SELECT TIMESTAMPDIFF(SECOND, '2018-10-17 11:51:55', '2018-10-17 11:51:58');
실행 결과는 다음과 같이 초 단위로 출력됩니다.
+---------------------------------------------------------------------+ | TIMESTAMPDIFF(SECOND, '2018-10-17 11:51:55', '2018-10-17 11:51:58') | +---------------------------------------------------------------------+ | 3 | +---------------------------------------------------------------------+ 1 row in set (0.00 sec)
두 시각이 3초 차이이므로 결과값으로 3이 반환된 것을 확인할 수 있습니다.
방법 2: UNIX_TIMESTAMP() 함수 사용
UNIX_TIMESTAMP() 함수는 날짜·시간 값을 1970년 1월 1일 00:00:00 UTC 이후 경과한 초 단위 숫자로 변환합니다. 따라서 두 값을 각각 변환한 뒤 빼주면 초 단위 차이를 손쉽게 구할 수 있습니다.
mysql> SELECT UNIX_TIMESTAMP('2018-10-17 11:57:50') - UNIX_TIMESTAMP('2018-10-17 11:57:45') AS DifferenceInSeconds;
실행 결과는 다음과 같습니다.
+---------------------+ | DifferenceInSeconds | +---------------------+ | 5 | +---------------------+ 1 row in set (0.00 sec)
두 시각이 5초 차이이므로 별칭 DifferenceInSeconds 컬럼에 5가 반환됩니다.
두 방법의 차이점
TIMESTAMPDIFF()는 단 하나의 함수 호출로 원하는 단위의 차이를 바로 구할 수 있어 가독성이 좋습니다. 반면 UNIX_TIMESTAMP()를 활용한 방식은 산술 연산 기반이라 다른 계산식과 조합하기 편리하다는 장점이 있습니다. 상황에 맞게 적절한 방법을 선택하면 됩니다.