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

Posted

技术标签:

【中文标题】检查一个表中的日期是不是出现在 Access 中另一个表的范围内【英文标题】:Check if date in one table appears in range in another table in Access检查一个表中的日期是否出现在 Access 中另一个表的范围内 【发布时间】:2014-03-21 16:58:04 【问题描述】:

我正在尝试在 MS Access 2010 中创建一个查询,其中我有两个表(Patients、Phantoms),并且我正在尝试查找 Phantoms 表中的日期是否是针对 + 内的患者表上的特定站点获取的/- 10 天的患者扫描。

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

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

我想编写一个查询,将患者表中的站点编号连接到 Phantoms 表中的站点编号,并检查 Phantom 的接收日期是否为扫描接收日期后 +/- 7 天在患者表中。

【问题讨论】:

到目前为止你有没有尝试过?您究竟希望查询的输出显示什么? 【参考方案1】:

我假设您在两个表中的日期字段都是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" 参数将输出其他两个参数之间的天数。

【讨论】:

以上是关于检查一个表中的日期是不是出现在 Access 中另一个表的范围内的主要内容,如果未能解决你的问题,请参考以下文章

如何根据Python中另一列中的日期查找最频繁的值

如何检查我的表中列的任何值是不是包含 MS ACCESS 2003 中的尾随空格?

从VB6检查访问中的假期表中是不是存在日期

检查一个字符串是不是可以由 Javascript 中另一个字符串中的字符组成

如果单元格为空白,则清除 VBA 中另一个单元格代码的内容

Microsoft Access 2016 查询为链接表中的空日期返回 1/1/1800