重叠天数的记录之间的差异日期

时间:2017-06-29 14:30:46

标签: sql sql-server tsql

我有一个实例,我需要计算日期重叠的记录之间的不同天数。以下是一个例子:

                  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。我可以有两个以上的记录。尝试使用日历表,但无法获得正确的代码。

2 个答案:

答案 0 :(得分:0)

使用日历表:

Bundle

答案 1 :(得分: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 |
+------+

或类似的东西。