2013-11-28 5 views
2

"lastfed"라는 타임 스탬프 열이있는 데이터베이스 테이블이 있습니다.CURRENT_TIME에서 1 시간을 뺀 값을 삽입 하시겠습니까?

누군가가 현재 시간에서 예를 들어 1 시간을 사용하여 해당 열을 어떻게 업데이트 할 수 있는지 알고 있습니까?

$query = $db->prepare("UPDATE test SET fullness = $newFullness, lastfed = CURRENT_TIME WHERE id = ?"); 

답변

4

사용 date_sub()

UPDATE test 
SET fullness = $newFullness, 
    lastfed = date_sub(now(), INTERVAL 1 HOUR) 
WHERE id = ? 

sqlfiddle demo

+0

작동 당신을 감사합니다! 시간이 허락 할 때 나는 당신의 답을 해결 된 것으로 표시 할 것입니다! – Lisa

+0

간단한 질문입니다. 예를 들어 30 분이 필요하면 그걸 어떻게 써야합니까? 30 분은 작동하지 않습니다 ... – Lisa

+0

끝에 s가없는 MINUTE를 사용하십시오. 사용 가능한 표현식에 대해서는 [here] (http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add)를 참조하십시오. [Here] (http://sqlfiddle.com/#!2/d41d8/26082)를 참조하십시오. –

0
UPDATE test 
SET fullness = $newFullness, lastfed = SUBDATE(CURDATE(), INTERVAL 1 HOUR) WHERE id = ? 
+0

이 상황에서 curdate 사용이 올바르지 않습니다. Curdate는 시간 소인의 날짜 부분을 리턴합니다. timestamp 열을 curdate로 설정하면 30 분이 어제 23시 30 분에 종료됩니다. [here] (http://sqlfiddle.com/#!2/d41d8/26083)를 참조하십시오. –

관련 문제