目前我在我的网站上存储每次搜索的日期,就像这样:
2011-06-07 21:44:01
现在我想执行一个查询,选择所有日期等于某个值的记录,但只考虑年/月和日,查询应该是这样的:
mysql_query("SELECT tag from tags WHERE date = '2011-06-07'");
但它不应考虑准确的时间(小时、分钟、秒),有没有办法做到这一点?
DATE()
函数。SELECT `tag`
FROM `tags`
WHERE DATE(`date`) = '2011-06-07'
然而,为了获得更好的性能,您可以使用...
WHERE `date`
BETWEEN '2011-06-07'
AND '2011-06-07 23:59:59'
mysql_query("SELECT tag from tags WHERE date LIKE '2011-06-07%'");
mysql_query("SELECT tag from tags WHERE DATE(`date`) = '2011-06-07'");
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date
SELECT *
FROM tablename
WHERE dateCol >= date("2017-11-01")
AND dateCol < date("2017-11-01") + INTERVAL 1 DAY;
使用它比使用DATE()函数更快。
如果您正在使用存储过程,您可以将日期作为字符串传递,并在("2017-11-01")
的位置提供它作为参数。
DATE()
函数会引起全表扫描。 - alexdate
ANDdate
< '2011-06-08'。或者您可以假设没有日期有小数秒,这几乎肯定是正确的(几乎总是)。 - Peter N Lewis