SQL-Server使用getdate和dateadd组合datepart

时间:2013-08-28 09:06:50

标签: sql sql-server sql-server-2008

我正在研究SQL-server 2008 r2中的存储过程。已经完成了SELECT和所有事情,但在将datepart与Dateadd和getdate结合起来时遇到了一些问题。问题是我想在查询中这样显示它。

2013-06 2013-07 2013-08

所以我尝试使用这段代码但是我的语法无效......

and Datepart(yy, Column) = 2013

但我不希望它被硬编码,因为使用该系统的人应该能够每月打印它。这就是为什么我在想getdate-1

DATEPART(MM,DATEADD(MM,-1 GETDATE())

我想将硬编码组合并将其更改为较低的硬编码。 SELECT代码目前看起来像这样。

INSERT INTO #EXCEL(COL1,COL2,COL3)
SELECT SUM (AVERAGE) / COUNT DISTINCT(TABLE.COLUMN)
FROM TABLE
INNER JOIN TABLE1 ON TABLE2.COLUMN = BLA BLA 
WHERE SOMETHING = X
AND DATEPART(YY,COLUMNDATE) = 2013
AND DATEPART(MM,COLUMNDATE) = 8

我想结合使用我的getdate,但是我一直遇到语法错误。

2 个答案:

答案 0 :(得分:2)

试试这个 -

--SELECT SUM(AVERAGE) / COUNT(DISTINCT t.[COLUMN])
--FROM dbo.[TABLE] t
--JOIN dbo.TABLE1 t2 ON t2.[COLUMN] = 'BLA BLA...' 
--WHERE SOMETHING = X
    AND YEAR(COLUMNDATE) = YEAR(GETDATE())
    AND MONTH(COLUMNDATE) = MONTH(GETDATE())

答案 1 :(得分:1)

所以对于那些遇到同样麻烦的人来说,这就是答案。

AND DATEPART(YY,COLUMNDATE) = DATEPART(YY,DATEADD(MM, -1, GETDATE()))