按CURDATE()过滤查询

时间:2012-10-22 02:49:15

标签: php mysql sql

SELECT *
FROM `summary`
WHERE submit_date = curdate()
AND submit_date > '06:00'
AND submit_date < '21:00'
LIMIT 0 , 30

这是否包括今天的所有日期? submit_date是一个显示有DATETIME的列,它不会像过滤那样过滤它们。我错过了什么?谢谢!

2 个答案:

答案 0 :(得分:2)

如果TIME()列为DATETIME,则您的2个限制条件应与DATE()返回的值进行比较,并且第一个条件应仅限于SELECT * FROM `summary` WHERE /* Truncate to the date only to compare against CURDATE() */ DATE(submit_date) = curdate() /* And truncate to the TIME() to compare against these time literals. */ /* note also that the time literals may need seconds as well */ AND TIME(submit_date) > '06:00:00' AND TIME(submit_date) < '21:00:00' LIMIT 0 , 30 部分。

{{1}}

答案 1 :(得分:0)

您应该将submit_date的日期部分与当前日期的日期部分进行比较,然后比较小时部分,如下所示:

SELECT *
FROM `summary`
WHERE 
    DATE(submit_date) = curdate()
AND HOUR(submit_date( BETWEEN 6 AND 21
LIMIT 0 , 30