具有相同月份时间戳的计数值

ubof19bj  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(372)

我正在努力计算所有具有相同时间戳的值。我的数据库是这样的:

假设我想得到2013年5月的订单数量。正确的语法是什么?

mcdcgff0

mcdcgff01#

要获得时间戳范围的计数,我们可以将时间戳列与下限和上限进行比较,例如:

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月1日前所有订单)
我们也可以在选择列表中的表达式中进行类似的比较,条件聚合模式:

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 列)可以利用具有 orderdate 作为前导列,执行有效的范围扫描操作。

相关问题