我只想从表中返回一个列表,其中返回的日期差异超过15天。它仅返回RequestStatus=1
未从RequestStatus=2
所在的位置返回的地方。
这是我的问题:
SELECT *
FROM User
WHERE RequestStatus = 1
OR RequestStatus = 3
AND (DATEDIFF(DAY, GETDATE(), TaskCompletionDate)) > 15
答案 0 :(得分:4)
使用SQL IN
子句为RequestStatus
条件中的WHERE
列指定所有合法值,例如
Select *
from User
Where RequestStatus in (1,2,3)
and (DATEDIFF(day, getdate(), TaskCompletionDate))> 15
答案 1 :(得分:4)
我建议将查询编写为:
select *
from User
Where RequestStatus in (1, 2, 3) and
TaskCompletionDate > DATEADD(day, 15, getdate())
通过将TaskCompletionDate
移到日期函数之外,可以为SQL Server提供更多优化查询的机会(例如,可能使用索引(如果可用且适当)。
答案 2 :(得分:1)
试试这个:
Select * from User Where (RequestStatus=1 or RequestStatus=3) and (DATEDIFF(day, getdate(), TaskCompletionDate))> 15