如何更新今天时间戳字段的mysql行?

时间:2013-05-26 17:16:03

标签: php mysql sql

我想更新MySql数据库中 timestamp 字段值在当天内的行。

e.g。

之类的东西
UPDATE records 
   SET firstname="bob" 
 WHERE lastname="jones" 
   AND timer=[today]

5 个答案:

答案 0 :(得分:2)

所有投射或修改字段timer的解决方案都不会让索引工作,这意味着这些查询会很慢。同样@Stevens回答我会写:

UPDATE records 
   SET firstname="bob" 
 WHERE lastname="jones" 
   AND timer >= cast(curdate() as datetime) 
   AND timer < cast(curdate() + interval 1 day as datetime);

然后你每次都有正确的一天。

编辑:错了

   AND timer => cast(curdate() as datetime) 

更正了

   AND timer >= cast(curdate() as datetime) 

答案 1 :(得分:1)

这将是您表现最佳的选项(从外部计算日期范围并使用BETWEEN)。铸造表格的每一行都会慢得多。

UPDATE records SET firstname="bob" 
WHERE lastname="jones" 
    AND timer BETWEEN '2013-05-26' AND '2013-05-27'

答案 2 :(得分:0)

您应该可以在更新中使用DATE_SUB(NOW())。

以下是帮助:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add

答案 3 :(得分:0)

您可以转换为DATE以删除时间部分,然后仅比较它。

UPDATE records SET firstname="bob" WHERE lastname="jones" AND CAST(timer AS DATE) = CAST(NOW() AS DATE)

答案 4 :(得分:0)

我会用

来做
where date(timer) = date(now())

请注意,如果你有时区变化,可能会做一些奇怪的事情,在这种情况下,我会把所有东西都变成纪元,即

where unix_timestamp(...pseudo code to get the proper midnight) <= unix_timestamp(timer)