检查一个表中的日期是不是出现在 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 中另一个表的范围内的主要内容,如果未能解决你的问题,请参考以下文章
如何检查我的表中列的任何值是不是包含 MS ACCESS 2003 中的尾随空格?