Mysql 如何将DateTime列与仅日期而非时间进行比较
我使用的是mySql,我的表列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' ,
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上没有)