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

时间:2020-06-26 19:31:18

标签: mysql sql count timestamp

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

enter image description here

假设我想在2013年5月获得订单量。什么是正确的语法来完成此任务?

1 个答案:

答案 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作为前导列的索引来执行有效的范围扫描操作