我在查询中使用datediff
来返回距离开始日期少于7天的日期。
DECLARE @d1 DATE
SET @d1 = (SELECT CurrentServiceWeek FROM Technician WHERE ID = 150)
SELECT
First_Name, Last_Name, Previous_Service_Date,
Address1, Address2, City, [State], Zip
FROM
Customer
JOIN
CustomerAddress ON Customer.ID = Customer_ID
WHERE
Technician_ID = 150
AND DATEDIFF(day, (@d1), (SELECT Previous_Service_Date
FROM Customer
WHERE Technician_ID = 150)) < 7
那datediff
也给了我不止一个结果。 CurrentServiceWeek
等于3/11/2016并且是开始日期,因此任何6天的日期都足以满足查询要求。但它作为Previous_Service_Date
值返回的日期是:
4/5/2015
3/6/2016
因此查询应仅返回2016年3月6日的日期。有人可以帮助我,所以我可以看到我出错的地方吗? DATEDIFF
忽略自我datepart
参数过了一天以来的年份吗?
答案 0 :(得分:0)
知道了!在这行代码中:
WHERE Technician_ID = 150)) < 7
它会抓住不到7天的任何结果......这包括负值,所以我们需要类似的东西。
WHERE Technician_ID = 150)) BETWEEN 0 and 7
获取与开始日期相同的日期,且不超过开始日期的7天。我犯了一个愚蠢的逻辑错误。