选择当月SQL内的日期

时间:2014-03-03 15:32:07

标签: sql sql-server-2008

我有一张类似下面的表格。我正在尝试仅选择开始日期在当月的行。这是我到目前为止所做的,但它不起作用。

SELECT *
FROM TABLE1
WHERE StartDate = MONTH(getdate())

如何只选择开始日期在当月的值?

2 个答案:

答案 0 :(得分:4)

使用此构造来避免StartDate列上的函数(如MONTH或YEAR)。这些函数将阻止使用任何索引或统计信息/

SELECT *
FROM TABLE1
WHERE
  StartDate >= DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
 AND StartDate < DATEADD(month, 1+DATEDIFF(month, 0, GETDATE()), 0)

任何将函数置于StartDate上的答案都不会按预期进行扩展。见error number 2 here。过滤器现在是不可搜索的,并且不能使用索引/统计信息。将查看每一行以进行表扫描。

答案 1 :(得分:-1)

您需要检查两个字段的月份

WHERE MONTH(startdate) = MONTH(getdate())