SQL Server 2获取月份总计但结果不同的方法

时间:2015-02-06 14:41:18

标签: sql-server date

我试图获得过去一个月的月总数并尝试了两种不同的方法,但是虽然我应该得到相同的结果,但通常情况会有所不同。 这是我尝试的两种方法:

  1. 在DATEADD()中使用MONTH()和YEAR():

    WHERE YEAR(SomeDate) = YEAR(DATEADD(mm,-6,GETDATE())) AND MONTH(SomeDate) = MONTH(DATEADD(mm,-6,GETDATE()))
    
  2. 使用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()))
    
  3. 我希望这两种方法能够为我提供2014年8月(现在的2015年2月)的所有结果,但第二种方法有时会遗漏某些结果。我认为这真的没有意义。谁可以澄清这个?

1 个答案:

答案 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)