【发布时间】:2015-03-27 10:46:19
【问题描述】:
我在查询中使用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 等于 2016 年 3 月 11 日,是开始日期,因此任何 6 天后的日期都足以查询。但它以Previous_Service_Date 值返回的日期是:
4/5/2015
3/6/2016
所以查询应该只返回 2016 年 3 月 6 日的日期。有人可以帮我看看我哪里出错了吗? DATEDIFF 是否忽略了自我为 datepart 参数传递一天以来的日期?
【问题讨论】:
-
你为什么在where中选择?
-
无需再次查询基表即可获得与主查询相同的行。我不太明白您在这里尝试做什么,但您不需要将 Previous_Service_Date 作为日期计算的一部分。
标签: sql sql-server tsql datediff datepart