2017-06-29 11 views
-1

日付が重複するレコード間の別の日の数を計算する必要がある場合があります。 - 6/30、5/15だけカウントする必要がある - 一度6/15を日が重複するレコード間の明確な日付

    Start Date   End Date 
Record 1   5/1/2017   6/15/2017 
Record 2   5/15/2017   6/30/2017 

は基本的に、私は5月1日/からカウントする必要があります。以下は一例です。そして私は2つ以上のレコードを持つことができました。カレンダーテーブルを使用しようとしましたが、コードを正しく取得できませんでした。カレンダーのテーブルを使用して

+1

データベースにカレンダーテーブルがありますか? –

+0

@ SGibbs-重複しているレコードの数が必要ですか? –

+0

レコードが重複している場合は、別個の日付を数える必要があります。私はT-SQLを使用しています – SGibbs

答えて

0

select count(distinct c.date) 
from calendartable c 
join tablename t on c.date between t.startdate and t.enddate 
0

...

DROP TABLE IF EXISTS my_table; 

CREATE TABLE my_table 
(id INT AUTO_INCREMENT PRIMARY KEY 
,start_date DATE NOT NULL 
,end_date DATE NOT NULL 
); 

INSERT INTO my_table VALUES 
(1,'2017-05-01','2017-06-15'), 
(2,'2017-05-15','2017-06-30'); 

SELECT DATEDIFF(LEAST(x.end_date,y.end_date),GREATEST(x.start_date,y.start_date)) diff 
    FROM my_table x 
    JOIN my_table y 
    ON y.end_date > x.start_date 
    AND y.start_date < x.end_date 
    AND y.id < x.id; 
+------+ 
| diff | 
+------+ 
| 31 | 
+------+ 

またはそのような何かをMySQLを使用しますが、カレンダーのテーブルを使用していません。

関連する問題