我们有两个输入DATE_FROM
和DATE_TO
,格式为'YYYY-mm-dd'
,问题是统计数字[DATE_FROM, DATE_TO)
和 [DATE_FROM -INTERVAL(DATE_TO,DATE_FROM), DATE_FROM)
期间的记录数。
为了计算第一个区间内的记录数,我们执行以下查询
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(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
SUM(IF(DATE(mytable.date_doc) BETWEEN '2012-11-03 00:00:00' AND '2012-11-12 23:59:59', 1, 0)) AS count_interval1,
SUM(IF(DATE(mytable.date_doc) BETWEEN '2012-10-24 00:00:00' AND '2012-11-03 00:00:00', 1, 0)) AS count_interval2
FROM mytable
感谢您的专业知识!
最佳答案
试试这个:
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
无需指定时间。
关于mysql - 如何计算过去同一时间间隔的记录数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13563899/