Development Tip

MySQL : 10 분 이상 지난 모든 행 삭제

yourdevel 2021. 1. 9. 11:03
반응형

MySQL : 10 분 이상 지난 모든 행 삭제


테이블에 타임 스탬프 필드가 있습니다. 10 분이 지난 레코드를 삭제하려면 어떻게합니까?

이것을 시도 :

DELETE FROM locks WHERE time_created < DATE_SUB( CURRENT_TIME(), INTERVAL 10 MINUTE)

작동하지 않았습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 :이 코드를 사용했습니다.

SELECT time_created, CURRENT_TIMESTAMP, TIMESTAMPDIFF( MINUTE, time_created, CURRENT_TIMESTAMP ) FROM locks

그러나 이상하게도 이것은 잘못된 결과를 제공합니다.

time_created CURRENT_TIMESTAMP TIMESTAMPDIFF (MINUTE, time_created, CURRENT_TIMESTAMP)
2010-08-01 11:22:29 2010-08-08 12:00:48 10118
2010-08-01 11:23:03 2010-08-08 12:00:48 10117

time_created가 유닉스 타임 스탬프 (int)이면 다음과 같이 사용할 수 있습니다.

DELETE FROM locks WHERE time_created < (UNIX_TIMESTAMP() - 600);

(600 초 = 10 분-당연히)

그렇지 않으면 (time_created가 mysql 타임 스탬프 인 경우) 다음을 시도해 볼 수 있습니다.

DELETE FROM locks WHERE time_created < (NOW() - INTERVAL 10 MINUTE)

대답은 MYSQL 매뉴얼 자체에 있습니다.

"DELETE FROM `table_name` WHERE `time_col` < ADDDATE(NOW(), INTERVAL -1 HOUR)"

참조 URL : https://stackoverflow.com/questions/3433465/mysql-delete-all-rows-older-than-10-minutes

반응형