答案 0 :(得分:1)
要获取时间戳范围的计数,我们可以将timestamp列与上下限进行比较,例如:
SELECT COUNT(*)
FROM mytable t
WHERE t.orderdate >= '2013-05-01 00:00:00'
AND t.orderdate < '2013-06-01 00:00:00'
(所有订单在5月1日的第一秒或之后以及6月的第一秒之前。)
我们还可以对SELECT列表中的表达式(条件聚合模式)进行类似的比较:
SELECT SUM(IF(t.orderdate >= '2013-05-01' AND t.orderdate < '2013-06-01',1,0)) AS cnt_may
FROM mytable t
等价
SELECT SUM(CASE WHEN DATE_FORMAT(t.orderdate,'%Y-%m') = '2013-05' THEN 1 ELSE 0 END) AS cnt_may
FROM mytable t
请注意,第一个查询(在裸orderdate
列的WHERE子句中有条件)可以利用以orderdate
作为前导列的索引来执行有效的范围扫描操作