SQL 到 return 所有记录比另一个日期提前 18 个月(到月末)

SQL to return all records 18 months ahead of another date (to end of month)

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

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

我试过:

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

但它似乎为我提供了那些日期之间的所有记录(仅限当月的某天),我需要它来获取到月底的所有记录。

所以假设我的 OpeningDate 是 2017-10-6(年、月、日),提前 18 个月就是 2019-04-06。这将只包括到 4 月 6 日的记录,我需要它包括到 4 月底的记录。

我可以对查询进行哪些修改以实现此目的?

任何帮助都会很棒。

谢谢!

您可以使用此代码,

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

注:

DATEADD(MONTH, 18, EOMONTH(OpeningDate))

EOMONTH 找到 OpeningDate 的结束日期,然后 DATEADD 将在该日期上加上 18 个月。这将准确给出从该日期起第 18 个月的结束日期。

你可以简单地试试这个

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

我在我的 SQL 服务器上试过了,它对我来说工作正常。