1

我们有两个输入DATE_FROMDATE_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

感谢您的专业知识!

4

1 回答 1

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

无需指定时间。

于 2012-11-26T11:34:44.977 回答