Mysql 如何将DateTime列与仅日期而非时间进行比较

Mysql 如何将DateTime列与仅日期而非时间进行比较,mysql,datetime,Mysql,Datetime,我使用的是mySql,我的表列date是DATETIME类型 但我只想比较今天的日期而不是时间 $today = date("Y-m-d", time()); 如果我用上述方法比较日期,结果总是错的 $this->update(" UPDATE `stats_tracker` SET `user_agent`='$this->visitor_user_agent' , `referrer`='$this->referrer_page' ,

我使用的是mySql,我的表列
date
是DATETIME类型

但我只想比较今天的日期而不是时间

       $today = date("Y-m-d",  time());
如果我用上述方法比较日期,结果总是错的

$this->update("
UPDATE `stats_tracker` 
SET 
  `user_agent`='$this->visitor_user_agent' , 
  `referrer`='$this->referrer_page' , 
  `page_views`='$page_views' 
WHERE 
  `visitor_ip`='$this->visitor_ip' 
  AND `page`='$this->this_page' 
  AND `date`='$today'");
请帮助我,我不是一个好的mySQL程序员

date_format('%Y-%m', time()) 
可能是进行比较时需要使用的函数。

您可以使用以下函数:

AND datediff(`date`, '$today') = 0

有一个名为DATE的mysql函数,它提取日期或日期时间表达式的日期部分

AND DATE(`date`)='$today'
编辑:如下面的评论所述,小心点,使用此选项将绕过datetime字段上的索引。您应改为使用:

AND date BETWEEN '$today 00:00:00' AND '$today 23:59:59'

您不应该使用它,因为它会杀死日期列上的索引,从而减慢查询速度。我不确定是否理解,您有什么建议不“杀死索引”?您需要使用between函数比较日期列,假设您想要2013年1月1日的行,您需要这样做:其中日期介于“2013-01-01 00:00:00”和“2013-01-01 23:59:59”之间,这没有帮助,因为不完整的日期时间输入是由mysql自动完成的,假设时间部分为0,所以它只会在午夜匹配,不在一天中的其他时间您对参数使用了错误的方向:不幸的是,根据文档,这也没有在
date
列上使用索引(至少在mysql 5.1上没有)