2013-11-22 3 views
0

24 시간 전에 삭제 된 모든 플레이어를 삭제해야합니다. 그러나 이것은 나의 전체 선수 테이블을 삭제했다. 운 좋게도 tho를 테스트하기 전에 백업을 만들었으므로 아무런 해가 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?24 시간 이상 타임 스탬프가 발생한 모든 필드 삭제

deletedInt(10) unsigned default 0이고 php의 time()은 시간을 저장하는 데 사용됩니다.

DELETE FROM players WHERE deleted < (unix_timestamp(now()) - 86400000) 

답변

0

하나 (가장 확실한) 문제는 MySQL의 unix_timestamp 기능은 시대가 아닌 밀리 초부터 초 수를 반환한다는 것입니다.

24 시간 만에 86,400 초입니다. 당신이 가진 리터럴은 1000 일을 나타냅니다.

내 접근 방식은 DATETIME에서 날짜 산술 연산을 수행 한 다음 그 결과를 변환하는 것입니다.

UNIX_TIMESTAMP(NOW() - INTERVAL 24 HOUR) 

참고 :

당신이 술어를 테스트 할 수 오히려 DELETE보다 SELECT 문에서 (즉 절). 초

0

24 시간이 후 다음 문장이 있어야 삭제 INT (10) 칼럼에 저장된 값이면되도록 24 * 60 * 60 = 86400

리눅스 시간은 에포크 초이다

삭제 된 플레이어에서 삭제 된 플레이어 < (unix_timestamp (now)) - 86400)

관련 문제