SQL仅显示此日期之后的数据

时间:2015-09-09 14:17:05

标签: sql sql-server

我正在尝试使用此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])

但它似乎没有起作用。

这是错误:

  

将nvarchar值''2015-08-01''转换为数据类型int。

时转换失败

3 个答案:

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

答案 1 :(得分:0)

Month()函数返回一个整数。更改为1899-12-30 00:00:00

您可能还需要在WHERE子句中包含一个表达式,以便仅在您要使用的日期或之后返回行。

答案 2 :(得分: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])