我们有两个输入DATE_FROM
和DATE_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'
感谢您的专业知识!
答案 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
无需指定时间。