SQL Server - 确定日期范围差距

时间:2017-08-28 21:20:12

标签: sql sql-server

我希望能够识别网络数据中的日期差距。例如:

  • 网络1:1/1/12(开始) - 2014年12月31日(结束)
  • 网络2:1/1/17(开始) - 12/31/9999(结束)

在上面的例子中,2015年和2016年的网络1结束日期和网络2开始日期之间存在差距。

1 个答案:

答案 0 :(得分:0)

您需要具有离散值才能比较日期并找到差距。由于日期时间在几天的时间内并不是完全离散的(您有小时,分钟和秒),您可能会想到创建一个日历表,如:

|date      |
|----------|
|01-01-2000|
|01-02-2000|
|01-03-2000|
...
12-31-2050

我怀疑你需要填写它直到9999年。

日历表可以包含日期,月份或年份,具体取决于您的要求。

拥有此类表后,您可以将日历表与数据表一起加入,以查找差距,具体取决于您的条件。类似的东西:

SELECT date, table.id 
FROM calendar
LEFT JOIN table on calendar.date  BETWEEN table.start_date AND table.end_date
WHERE table.id IS NULL

这是一个基本的假设示例,因为您尚未提供有关表和查询的完整信息,但您可以使用它来获得所需的结果。