我们有两个输入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
感谢您的专业知识!