【发布时间】:2014-07-21 19:31:04
【问题描述】:
我将如何从下表中提取重叠日期?
ID Name StartDate EndDate Type
==============================================================
1 John Smith 01/01/2014 31/01/2014 A
2 John Smith 20/01/2014 20/02/2014 B
3 John Smith 01/03/2014 28/03/2014 A
4 John Smith 18/03/2014 24/03/2014 B
5 John Smith 01/07/2014 31/07/2014 A
6 John Smith 15/07/2014 31/07/2014 B
7 John Smith 25/07/2014 25/08/2014 C
根据 John Smith 的第一个示例,日期 01/01/2014 到 31/01/2014 与 20/01/2014 到 20/02/2014 重叠,所以我预计只是重叠的时期,即 20 /01/2014 至 31/01/2014。
最终的结果是:
ID Name StartDate EndDate
==================================================
8 John Smith 20/01/2014 31/01/2014
9 John Smith 18/03/2014 24/03/2014
10 John Smith 15/07/2014 31/07/2014
11 John Smith 25/07/2014 31/07/2014
2014 年 8 月 10 日需要帮助
除了上述请求之外,我还在寻求有关如何获得以下结果的帮助或指导,这些结果应包括重叠的日期和不重叠的日期。 ID 列无关紧要。
ID Name StartDate EndDate Type
==================================================
1 John Smith 01/01/2014 19/01/2014 A
8 John Smith 20/01/2014 31/01/2014 AB
2 John Smith 01/02/2014 20/02/2014 B
3 John Smith 01/03/2014 17/03/2014 A
9 John Smith 18/03/2014 24/03/2014 AB
3 John Smith 25/03/2014 28/03/2014 A
5 John Smith 01/07/2014 14/07/2014 A
10 John Smith 15/07/2014 31/07/2014 AB
11 John Smith 25/07/2014 31/07/2014 ABC
7 John Smith 01/08/2014 25/08/2014 C
虽然下图不是上述图像的精确反映,但出于说明目的,我有兴趣查看同一结果集中重叠的日期(红色)和不重叠的日期(天蓝色)。
【问题讨论】:
-
你不能只使用BETWEEN,然后把日期范围放在那里吗?
标签: sql sql-server database tsql