我有一个实例,我需要计算日期重叠的记录之间的不同天数。以下是一个例子:
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。我可以有两个以上的记录。尝试使用日历表,但无法获得正确的代码。
答案 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 |
+------+
或类似的东西。