SQL : TIMESTAMPDIFF 시간비교를 위한 쿼리

김기욱·2020년 12월 9일
0
post-thumbnail

시간비교

이따금씩 DATETIME 이나 TIMESTAMP필드에 존재하는 값들을 비교 혹은 연산이 필요한 쿼리문을 작성해야 할 때가 있습니다. 그때 쓰는게 TIMESTAMPDIFFDATEDIFF입니다.

DATEDIFF는 단순하게 날짜간의 연산(빼기)를 할 때 쓰입니다.
DATEDIFF(날짜1, 날짜2)라는 코드를 작성하게 되면 단순하게 둘 날짜간의 차이만 연산해서
결과값을 도출 시켜 줍니다.

TIMESTAMPDIFF(단위, 날짜1, 날짜2)를 통해 필요한 연산값을 사용자가 선택해서 도출할 수 있게 도와줍니다.
예컨데 2022. 12. 10. 22:002022. 12. 10. 23:00을 HOUR라는 단위를 넣으면 1이라는 값이 나오고 MINUTE을 넣으면 60 SECOND면 3600이라는 결과값이 나오게 됩니다.

문제점

TIMESTAMPDIFF(hour, NOW(), created_at ) > 1
이와같이 TIMESTAMPDIFF를 사용하면 데이터는 가공처리 된 것으로 인식됩니다. created_at이 만일 index로 설정이 되지 않았다면 별 문제는 없지만 만약 index로 설정되었다면 index가 제대로 작동하지 않은 문제가 발생합니다.

그러므로 인덱스가 설정된 항목을 비교할 때는 직접비교보다는

created_at > DATE_ADD(NOW(), INTERVAL -1 HOUR)와 같이 DATE_ADD나 DATE_SUB같은 시간연산 함수로 연산값을 통해 인덱스와 비교해주시는게 좋습니다.

profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글