如何计算过去同一时间间隔内的记录数?

时间:2012-11-26 11:28:16

标签: mysql sql date

我们有两个输入DATE_FROMDATE_TO,格式为'YYYY-mm-dd',问题是计算期间[DATE_FROM, DATE_TO)和{{1}的记录数}。

要计算第一个间隔中的记录数,我们执行以下查询

[DATE_FROM -INTERVAL(DATE_TO,DATE_FROM), DATE_FROM)

这里的日期附加在午夜时分:分钟:秒以堆积边界上所有日期的记录。

如何构造在第二个时间间隔内执行相同计数的查询?

是否可以在对数据库的一个查询中执行此操作或提出任何最佳方法来执行此操作?

修改

间隔1(10天):DATE_FROM ='2012-11-03 00:00:00',DATE_TO ='2012-11-12 23:59:59'

间隔时间2(10天):DATE_FROM ='2012-10-24 00:00:00',DATE_TO ='2012-11-02 23:59:59'

SELECT 
    count(*) as num_records
FROM mytable
WHERE 
    mytable.date_doc >= 'DATE_FROM 00:00:00'
AND mytable.date_doc <= 'DATE_TO 23:59:59'

感谢您的专业知识!

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT 
   SUM(IF(DATE(mytable.date_doc) BETWEEN '2012-11-03' AND '2012-11-12', 1, 0)) AS count_interval1,
   SUM(IF(DATE(mytable.date_doc) BETWEEN SUBDATE('2012-11-03', DATEDIFF('2012-11-12', '2012-11-03') + 1) AND SUBDATE('2012-11-03', 1), 1, 0)) AS count_interval2
FROM mytable

无需指定时间。