MySQL:获取两个日期时间之间的记录计数

45
我在MySQL中遇到一个问题,我想要获取两个日期时间条目之间的记录数。
例如:
我的表中有一个名为“created”的列,使用datetime数据类型。
我想计算在“今天早上4:30”和“当前日期时间”之间创建的记录数。
我尝试使用MySQL的一些函数,但还没有成功。
你可以帮我解决这个问题吗? 谢谢。
4个回答

97

可能需要使用以下方法:

SELECT count(*) FROM `table` 
where 
    created_at>='2011-03-17 06:42:10' and created_at<='2011-03-17 07:42:50';

或者使用between

SELECT count(*) FROM `table` 
where 
    created_at between '2011-03-17 06:42:10' and '2011-03-17 07:42:50';

您可以根据需要更改日期时间。可以使用curdate()now()来获取所需的日期。


14
请注意顺序,您需要先写较小的日期和时间,然后才是较大的日期和时间。 - Hafiz
如果日期和时间在不同的列中,该怎么办? - Satanand Tiwari
在这种情况下,您需要使用日期和时间条件的组合。例如,如果您想要在单个日期中过滤某个时间,则日期列将具有相等条件,同时时间将具有介于条件。在其他情况下,您可以只使用日期之间的过滤器,并按时间排序以获取所有在这些日期中的记录。 - Harry Joy
1
如果我们在查询中没有指定时间,例如:SELECT count(*) FROM table where created_at between '2011-03-10' and '2011-03-17'; 会发生什么?MySQL会自动将时间视为 00:00:00 吗? - shasi kanth

6
select * from yourtable where created < now() and created > '2011-04-25 04:00:00'

5
select * from yourtable 
   where created < now() 
     and created > concat(curdate(),' 4:30:00 AM') 

1
为了提高速度,你可以这样做。
WHERE date(created_at) ='2019-10-21'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接