2017-05-24 2 views
2
SELECT * 
FROM SESSIONS 
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), SESSION_CREATED))/3600 >= 24 

이 나에게이 개 결과 오류 코드 : 1292 잘린 잘못된 시간 값

DELETE FROM SESSIONS 
    WHERE TIME_TO_SEC(TIMEDIFF(NOW(), SESSION_CREATED))/3600 >= 24 

을주고 그리고 이것은 나에게 줄 : "오류 코드 : 1292 잘린 잘못된 시간 값을"

SESSION_CREATED은 TIMESTAMP입니다 데이터 유형

실제 데이터 :

SESSION_ID  SESSION_CREATED 
223133   2017-05-22 07:14:34 
223134   2017-05-22 07:14:36 

선택은 어떻게 작동 하나 삭제는 할 수 없습니까?

+0

모든 트리거가 관련 되나요? – jarlh

+0

데이터를 게시 할 수 있습니까 – maSTAShuFu

+0

첫 번째 쿼리의 선택 목록에'TIME_TO_SEC (TIMEDIFF (NOW(), SESSION_CREATED))/3600'을 추가하십시오. 반환 된 데이터가 의미가 있습니까? – jarlh

답변

3

왜 이렇게 복잡한 표현을 사용하고 있습니까? 왜는 수행

코드가 실패 할 수 있습니다 이유는 시간 데이터 유형의 범위로 제한됩니다 timediff()을 사용에 관해서는
DELETE FROM SESSIONS 
    WHERE SESSION_CREATED < NOW() - INTERVAL 1 DAY; 

. And this is:

MySQL을 검색하여 시간 값을 표시 'HH : MM : SS'형식 (또는 'HHH : MM : SS'큰 시간 값에 대한 포맷). TIME 값의 범위는 '-838 : 59 : 59'에서 '838 : 59 : 59'까지입니다.

NOW()을 사용하고 있으므로 값이 한 반복에서 다음 반복으로 바뀝니다. 데이터가 너무 오래되지 않았을 때 SELECT을 실행 한 다음 DELETE 일 때만 실행했습니다.

+0

감각은 있지만 여전히 ... 나는 매일 (내가 충돌하지 않음) 선택을 실행하지만 결과는 얻을 수 있지만 내가 삭제를 실행 매일 매일 반환,이 오류가 발생합니다. 시간 문제 일 수는 없습니다. 어쨌든, 나는 진술서를 쓸거야, 고마워. –

+0

당신은 'SESSION_CREATED <= NOW() - INTERVAL 1 DAY' @ Vlad Florin –

관련 문제