2013-11-28 69 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

最后使用MINUTE而没有s。请参阅[这里](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返回时间戳的日期部分。将时间戳列设置为curdate - 30分钟将在昨天23:30结束。 [here](http://sqlfiddle.com/#!2/d41d8/26083)为例。 –