我试图获得过去一个月的月总数并尝试了两种不同的方法,但是虽然我应该得到相同的结果,但通常情况会有所不同。 这是我尝试的两种方法:
在DATEADD()中使用MONTH()和YEAR():
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月)的所有结果,但第二种方法有时会遗漏某些结果。我认为这真的没有意义。谁可以澄清这个?
答案 0 :(得分:0)
你需要处理这些日期的时间:
比较您的查询:
SELECT DATEADD(mm, -6, DATEADD(D,(DATEPART(D, GETDATE())-1)-1,GETDATE()))
要:
SELECT CAST(DATEADD(mm, -6, DATEADD(D,(DATEPART(D, GETDATE())-1)-1,GETDATE())) AS DATE)