2017-06-29 23 views
-1

我有一個實例,我需要計算日期重疊的記錄之間的不同天數。下面是一個例子:重疊天的記錄之間的不同日期

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

基本上,我需要從5/1 /計數 - 6/30,而只需要計數5/15 - 6/15一次。我可以有兩個以上的記錄。嘗試使用日曆表,但無法獲得正確的代碼。

+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

使用MySQL,但不使用日曆表...

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 | 
+------+ 

或類似的東西。

相關問題