2015-09-09 80 views
0

後我想上使用此SQL查詢在此日期之後顯示的數據:SQL只顯示數據在此日期

SELECT 
    DATEPART(mm, [closedate]) AS [Month], 
    COUNT([opp]) AS 'Won Opportunities', SUM([actual]) AS 'Value' 
FROM 
    [dbo].[tableName] 
WHERE 
    [person] = 'Name' 
    AND Month([CreatedOn]) = 2015-08-01 
GROUP BY 
    DATEPART(mm, [closedate]) 

但它似乎並不奏效。

這是錯誤:

Conversion failed when converting the nvarchar value ''2015-08-01'' to data type int.

+1

你想限制數據到一個特定的月份,或者你想在指定的日期後的一切? – jpw

+0

嘿@jpw,那個月和之後。 – AndroidAL

回答

0

的月份()函數返回一個整數。更改爲Month([CreatedOn]) = 8

您可能還需要在WHERE子句中包含一個表達式,以便僅在您要使用的任何日期或之後返回行。

0

請嘗試使用下面的代碼片段。

SELECT 
DATEPART(mm,[closedate]) AS [Month], 
COUNT([opp]) AS 'Won Opportunities', SUM([actual]) AS 'Value' 

FROM [dbo].[tableName] 
WHERE [person]= 'Name' 
AND [CreatedOn] >= Cast('2015-08-01' as date) 
/* AND [CreatedOn] >= '2015-08-01' -- also try with this */ 

GROUP BY 
DATEPART(mm,[closedate]) 
+0

它返回所有月份? – AndroidAL

+0

我已根據問題的評論更新了我的上述答案。請嘗試讓我知道是否有任何問題。 –

2

如果希望所有行的具體日期後,你想:

where CreatedOn >= '2015-08-01' 

這將讓您在8月1日之後的一切。

但是,如果只想從八月行,那麼你想

where month(CreatedOn) = 8 -- or where month(CreatedOn) = month('2015-08-01') 

在任何情況下,日期文字需要在單引號,像這樣:'2015-08-01'代替2015-08-01