我有3张桌子,如下所示。
1。
Services
--------------------------
ServiceID (PK,int)
SalesID (FK, int)
ItemName (varchar)
FirstServiceDate (datetime)
2。
Sales
------------------
SalesID (PK,int)
CustomerID (FK,int)
SerialNo (varchar)
ModelNo (varchar)
和3。
Customer
--------------------
CustomerID (PK,int)
CustName (varchar)
我正在尝试在FirstServiceDate的日期之前1周从服务,销售和客户表中获取详细信息。我试过下面的查询。但它没有按预期工作。
Select B.SalesID, C.CustomerID, C.CustomerName, B.SerialNo, B.ModelNo,
A.FirstServiceDate from Services A inner join Sales B on
A.SalesID = B.SalesID inner join Customer C on
B.CustomerID = C.CustomerID and
FirstServiceDate = DATEADD(week, 1, GETDATE())
如果FirstServiceDate为2019年3月2日,则为1周前(即2月23日-今天)。我应该得到通知。
任何帮助将不胜感激。
答案 0 :(得分:1)
如果FirstServiceDate
列的类型为DateTime
,则需要将其转换为Date
:
select
B.SalesID, C.CustomerID, C.CustomerName,
B.SerialNo, B.ModelNo, A.FirstServiceDate
from Services A inner join Sales B
on A.SalesID = B.SalesID
inner join Customer C
on B.CustomerID = C.CustomerID
where convert(date, A.FirstServiceDate) = convert(date, dateadd(week, 1, getdate()))
这样,消除了日期的时间部分,仅比较了日期部分。
编辑:
如果要在下周安排服务,请像这样更改where
部分:
where
convert(date, A.FirstServiceDate)
between
convert(date, getdate())
and
convert(date, dateadd(week, 1, getdate()))