【发布时间】:2017-12-06 04:10:12
【问题描述】:
我有一个包含两个 DATETIME 字段的表,OpeningDate 和 FinishingDate。
我正在尝试编写一个查询,该查询返回 FinishingDate 正好比 OpeningDate 早 16 个月的所有记录。
我试过了:
SELECT * FROM Sales
WHERE FinishingDate = DATEADD(MONTH, 16, OpeningDate)
但它似乎为我提供了这些日期之间的所有记录(仅到月中的一天),我需要它来获取所有记录直到月底。
假设我的 OpeningDate 为 2017-10-6(年、月、日),提前 18 个月将是 2019-04-06。这将只包括截至 4 月 6 日的记录,我需要它包括截至 4 月底的记录。
我可以对查询进行哪些修改来实现这一点?
任何帮助都会很棒。
谢谢!
【问题讨论】:
-
请连同数据一起显示您的表结构,这样会更好。
-
使用 EOMONTH 将您的 OpeningDate 转换为月底:SELECT * FROM Sales WHERE FinishingDate between OpeningDate AND DATEADD(MONTH, 16, EOMONTH(OpeningDate))
标签: sql sql-server tsql between