检查一个表中的日期是否出现在Access中另一个表的范围内

时间:2014-03-21 16:58:05

标签: sql join ms-access-2007

我正在尝试在MS Access 2010中创建一个查询,其中我有两个表(患者,幽灵),我正在尝试查找Phantoms表中的日期是否为患者表中的特定网站获取+ / - 病人扫描10天。

患者表只有站点,患者ID和扫描接收日期。

对于每个站点编号,我们必须获得一个幻像。 Phantoms表有站点编号和幻像的接收日期。

我想写一个查询,其中来自Patient表的站点号加入Phantoms表中的站点号,并且它检查Phantom的接收日期是从扫描接收日期开始+/- 7天在患者表中。

1 个答案:

答案 0 :(得分:0)

我假设两个表中的日期字段都是Date/Time类型,如果不是,请告诉我。

有两种方法可以区分两个日期。一种方法是用一些简单的数学手动检查条件。

SELECT Patient.[Patient ID], Patient.Site, Patient.[Scan Recieved], Phantom.[Receive Date]
FROM Patient INNER JOIN Phantom ON Patient.Site = Phantom.[Site Number]
WHERE (((Patient.[Scan Recieved]-Phantom.[Receive Date])<=7 
    AND (Patient.[Scan Recieved]-Phantom.[Receive Date])>=0)) 
OR (((Phantom.[Receive Date]-Patient.[Scan Recieved])<=7 
 AND (Phantom.[Receive Date]-Patient.[Scan Recieved])>=0))

另一种可能性是使用DateDiff函数,这使事情变得更简单。

SELECT Patient.[Patient ID], Patient.Site, Patient.[Scan Recieved], Phantom.[Receive Date]
FROM Patient INNER JOIN Phantom ON Patient.Site = Phantom.[Site Number]
WHERE DateDiff("d", Patient.[Scan Recieved], Phantom.[Receive Date]) <=7

"d"参数将输出其他两个参数之间的天数。

相关问题