我有一张类似下面的表格。我正在尝试仅选择开始日期在当月的行。这是我到目前为止所做的,但它不起作用。
SELECT *
FROM TABLE1
WHERE StartDate = MONTH(getdate())
如何只选择开始日期在当月的值?
答案 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())