1

2つの入力が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'

ここでは、日付に深夜の時:分:秒が追加され、境界上の日のすべてのレコードがヒープされます。

2番目の時間間隔で同じカウントを実行するクエリを作成するにはどうすればよいですか?

データベースへの1つのクエリでそれを行うこと、またはそれを行うための最適な方法を提案することは可能ですか?

編集

間隔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 に答える