SQL 到 return 条记录使用两个日期字段彼此提前 16 个月

SQL to return records using two date fields that fall 16 months ahead of each other

我有一个 table 有两个 DATETIME 字段,OpeningDate 和 FinishingDate。

我正在尝试编写一个查询,returns FinishingDate 比 OpeningDate 早 16 个月的所有记录。

我知道如何编写查询来检查两个日期(使用 SQL BETWEEN 和 DATEADD),但我不确定如何执行此查询。

我试过:

SELECT * FROM Sales
WHERE FinishingDate between OpeningDate AND DATEADD(MONTH, 16, OpeningDate)

但它似乎为我提供了这些日期之间的所有记录,而不仅仅是提前 16 个月的记录。

任何帮助都会很棒。

谢谢!

除非我遗漏了什么,FinishingDateOpeningDate 整整 16 个月:

SELECT * FROM Sales
WHERE FinishingDate = DATEADD(MONTH, 16, OpeningDate)

我的方法是:

SELECT FinishingDate,OpeningDate FROM Sales
group by FinishingDate,OpeningDate
having DATEDIFF(m,OpeningDate,FinishingDate) >= 16

all records that have a FinishingDate that is exactly 16 months ahead of the OpeningDate.

我不完全确定,但这不一定是确切的日期。如果是这种情况,这将是大于或等于第 16 个月的第一天且小于第 17 个月的第一天的日期范围。

SELECT * 
  FROM Sales
 WHERE FinishingDate >= --greater than or equal to start of 16th month
                        DATEADD(month, DATEDIFF(month, 0, DATEADD(MONTH, 16, OpeningDate)), 0)  
   AND FinishingDate < --less than the start of the 17th month
                        DATEADD(month, DATEDIFF(month, 0, DATEADD(MONTH, 16, OpeningDate)) + 1, 0)