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 服务器上试过了,它对我来说工作正常。
我有一个 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 服务器上试过了,它对我来说工作正常。