2013-02-11 1 views
0

테이블의 DATETIME 필드를 업데이트하려고합니다. 내가 원하는 것은 만료되기 3 시간 전입니다.MySQL의 값을 앞으로 특정 시간으로 어떻게 증가시킬 수 있습니까?

내 현재 코드는 다음과 같습니다

UPDATE mindcore_sessions 
    SET session_time = DATE_ADD(session_time, INTERVAL 3 HOUR) 
    WHERE session_id = '$sessionId'; 

예 값은 다음과 같습니다 2013-02-11 00:00:00. 이 쿼리를 실행하면 2013-02-11 03:00:00으로 변경됩니다. 어느 것이 옳은가. 그러나을 다시 실행하면 2013-02-11 06:00:00으로 변경됩니다.

내가 원하는 것은 항상 3 시간 전입니다. 설명하기가 어렵지만, 다시 실행하면 동일하게 유지되기를 바랍니다. 1 분 후에 다시 실행하면 1 분만 증가시킵니다.

죄송합니다. 자세한 내용은 미안하지만 완전히 혼란 스럽습니다 (늦었습니다!).

감사합니다 :)

+0

:

당신은 값이 앞서 지금 에서 3 시간, 당신은 단순히이 작업을 수행 할 수 있도록하려면 * 저장된 값 **에 ... 원래 값을 유지하려면 다른 위치에 저장해야합니다. – Barranka

답변

3

대신 마지막 session_time 세 (3) 시간을 추가, NOW() 세 (3) 시간을 추가

update mindcore_sessions 
set session_time = DATE_ADD(NOW(), INTERVAL 3 HOUR) 
where session_id = '$sessionId';` 
+0

모두 감사합니다! 이것은 내가 찾고 있었던 것이 었습니다 ... 솔직히 말해서, 나는 뇌의 BSOD가 조금 있다고 생각합니다. 나는 그것을 생각해야했다. << – Forest

2

대신에 추가하는 NOW()에 간격을 추가 현재 값 :

UPDATE mindcore_sessions SET session_time = DATE_ADD(NOW(), INTERVAL 3 HOUR) WHERE session_id = '$sessionId'; 
1

이전에 같은 쿼리가 실행되었는지 알 수있는 방법이 없습니다.

가능한 유일한 해결책은 추가 열에 원래 값을 저장하고이 열을 사용하여 과거에 값이 변경되었는지 확인하는 것입니다. 당신의`UPDATE` 다시, 다음 3 시간을 추가 끝 *을 실행하면

DATE_ADD(NOW(), INTERVAL 3 HOUR)

관련 문제