Sql 基于日期时间的联接表
根据日期时间连接两个表Sql 基于日期时间的联接表,sql,sql-server,Sql,Sql Server,根据日期时间连接两个表 CREATE Table A (StartDate DATETIME, EndDate DATETIME, Name VARCHAR(50)) CREATE Table B (FromDate DATETIME, ToDate DATETIME, Product VARCHAR(50), Price VARCHAR(50)) INSERT INTO A values ('05/20/2014 10:00:00', '05/20/2014 14:00:00', 'S
CREATE Table A
(StartDate DATETIME,
EndDate DATETIME,
Name VARCHAR(50))
CREATE Table B
(FromDate DATETIME,
ToDate DATETIME,
Product VARCHAR(50),
Price VARCHAR(50))
INSERT INTO A values ('05/20/2014 10:00:00', '05/20/2014 14:00:00', 'Stalin')
INSERT INTO A values ('05/20/2014 14:02:00', '05/20/2014 18:03:00', 'Vipin')
INSERT INTO A values ('05/20/2014 18:10:00', '05/20/2014 23:04:00', 'Raju')
INSERT INTO B values ('05/20/2014 10:01:00', '05/20/2014 14:01:00', 'Pen', '20')
INSERT INTO B values ('05/20/2014 14:02:33', '05/20/2014 18:03:58', 'Pensil', '22')
INSERT INTO B values ('05/20/2014 18:11:00', '05/20/2014 23:05:00', 'Book','33')
结果应该是
StartDate EndDate FromDate ToDate Product Price Name
5/20/2014 10:00 | 5/20/2014 14:00 | 5/20/2014 10:01 | 5/20/2014 14:01 | Pen | 20 | Stalin
5/20/2014 14:02 | 5/20/2014 18:03 | 5/20/2014 14:02 | 5/20/2014 18:03 | Pensil | 22 | Vipin
5/20/2014 18:10 | 5/20/2014 23:04 | 5/20/2014 18:11 | 5/20/2014 23:05 | Book | 33 | Raju
我正在尝试以下查询
Select A.StartDate,a.EndDate, b.FromDate, b.ToDate, b.Product,b.Price,a.Name
from a
Join B
ON A.StartDate BETWEEN DATEADD(MM,-2,B.FromDate)
AND DATEADD(MM,2,B.ToDate)
结果不符合预期,有什么帮助吗?所有日期都在两个月之内。我想你真的需要几分钟。试试这个:
Select A.StartDate,a.EndDate, b.FromDate, b.ToDate, b.Product, b.Price,a.Name
from a Join
B
ON A.StartDate BETWEEN DATEADD(minute,-2,B.FromDate) AND DATEADD(minute,2,B.ToDate);
是有效日期部分的列表
使用诸如
dateadd()
和datepart()
之类的函数时,请使用设备的全名。没有理由使用缩写。即使您认为自己知道MM
的意思,阅读您代码的其他人也可能不知道。希望这就是您所寻找的
SELECT A.StartDate,
A.EndDate,
B.FromDate,
B.ToDate,
B.Product,
B.Price,
A.Name
FROM A
JOIN B ON DATEPART(HH,A.StartDate) = DATEPART(HH,B.FromDate)
AND CAST(A.StartDate AS DATE) = CAST(B.FromDate AS DATE)
获得的结果
他展示了预期的结果。。。他没有显示他得到了什么,认为在
DateAdd
MM
代表月份,这可能就是为什么您的查询没有按预期工作