완전한 24시간 기준으로 날짜 차이 계산하기
MySQL에서 DATEDIFF() 함수는 두 값의 날짜(date) 부분만을 사용하여 차이를 계산합니다. 즉, 시간 정보는 무시되기 때문에 정확히 24시간이 지났는지 여부와 관계없이 단순히 날짜만 비교하게 됩니다.
따라서 시간까지 고려하여 완전한 24시간 하루(full 24-hour days)가 몇 번 지났는지 계산하려면 TIMESTAMPDIFF() 함수를 사용해야 합니다.
TIMESTAMPDIFF() 함수의 동작 원리
TIMESTAMPDIFF(단위, 시작일시, 종료일시) 형태로 사용하며, 첫 번째 인자로 DAY를 지정하면 두 일시 사이에 실제로 경과한 완전한 24시간 단위의 일수를 반환합니다. 만약 마지막 24시간이 채워지지 않았다면 그만큼은 계산에서 제외됩니다.
예제 쿼리
예를 들어, '2017-05-23 12:00:00'부터 '2017-05-27 11:59:00'까지의 완전한 24시간 일수를 구하고 싶다면 다음과 같은 MySQL 쿼리를 실행하면 됩니다.
mysql> Select TIMESTAMPDIFF(DAY, '2017-05-23 12:00:00' , '2017-05-27 11:59:00'); +---------------------------------------------------------------------------+ | TIMESTAMPDIFF(DAY, '2017-05-23 12:00:00' , '2017-05-27 11:59:00') | +---------------------------------------------------------------------------+ | 3 | +---------------------------------------------------------------------------+ 1 row in set (0.00 sec)
결과 해석
위 쿼리의 결과는 3입니다. 겉보기에는 약 4일에 가까운 기간이지만, 종료 시각인 11:59:00이 시작 시각인 12:00:00보다 1분 이르기 때문에 네 번째 24시간이 완전히 채워지지 않아 결과에서 제외된 것입니다.
DATEDIFF()와 TIMESTAMPDIFF()의 차이 요약
- DATEDIFF(): 날짜 부분만 비교하므로 시간과 무관하게 일수 차이를 반환합니다.
- TIMESTAMPDIFF(DAY, ...): 시간까지 고려하여 완전히 경과한 24시간 일수만 반환합니다.
따라서 정확한 시간 기반의 일수 계산이 필요하다면 반드시 TIMESTAMPDIFF() 함수를 사용하는 것이 좋습니다.