【发布时间】:2015-02-06 14:41:17
【问题描述】:
我正在尝试获取过去一个月的总月数,并尝试了两种不同的方法,但虽然我应该得到相同的结果,但通常情况不同。 这是我尝试过的两种方法:
-
将 MONTH() 和 YEAR() 与 DATEADD() 一起使用:
WHERE YEAR(SomeDate) = YEAR(DATEADD(mm,-6,GETDATE())) AND MONTH(SomeDate) = MONTH(DATEADD(mm,-6,GETDATE())) -
使用 DATEADD() 确定一个月的第一天和最后一天:
WHERE SomeDate >= DATEADD(mm, -6, DATEADD(D,(DATEPART(D, GETDATE())-1)*-1,GETDATE())) AND SomeDate <= DATEADD(mm, -5, DATEADD(D,DATEPART(D, GETDATE())*-1,GETDATE()))
我希望这两种方法都能为我提供 2014 年 8 月(现在是 2015 年 2 月)的所有结果,但第二种方法有时会遗漏某些结果。我觉得这真的没有道理。谁能澄清一下?
【问题讨论】:
-
输入数据和预期结果?
标签: sql-server date