3

我在表格 tbl Admission 上有以下数据
:日期和时间是两个不同的字段,并以dd/mm/yyyy格式存储

AdmitDate          AdmitTime 
1/6/2012            00:00
3/6/2012            10:00
3/6/2012            19:00
4/6/2012            20:38
5/6/2012            21:00
7/6/2012            03:00

我想写一个查询来显示 3/6/2012 07:00:00 和 5/6/2012 06:59:59 之间的所有记录。

查询还应该有用户输入“日期”的选项(只有日期和时间可以是第一天早上 7 点到第二天早上 6 点 59 点之间的固定间隔) - 例如使用 PARAMETERS。我使用 access 2003。我尝试了几个查询,但无法完善一个 - 我没有得到准确的结果。有人请帮忙。

谢谢,

问候,

4

2 回答 2

3

如果只有一DATETIME列,查询的条件很容易构造:

WHERE AdmitDateTime >= '2012-06-03 07:00' 
  AND AdmitDateTime <  '2012-06-05 07:00' 

由于您不能这样做并且因为 Access 具有自己的日期和时间功能,我认为这将起作用:

WHERE DateValue(AdmitDate) + AdmitTime 
         >= DateValue([InputDate]) + TimeValue('07:00')
  AND DateValue(AdmitDate) + AdmitTime 
         <  DateValue([InputDate]) + 2 + TimeValue('07:00')

这些DateValue()调用是为了确保用户传递的值或AdmitDate列中的任何时间部分都被截断,并且只使用 the'07:00'和 the AdmitTime

于 2012-06-23T22:59:17.153 回答
0

所有办公日期都是数字,因此您可以添加:

SELECT [admitdate]+[admittime] AS Expr1
FROM dt
WHERE ((([admitdate]+[admittime]) 
  Between #6/3/2012 7:0:0# And #6/5/2012 6:59:59#));

以上将在查询设计窗口中工作,但在其他任何地方,例如 VBA,您都会遇到语言环境问题。

编辑重新评论

Result
03/06/2012 10:00:00
03/06/2012 19:00:00
04/06/2012 20:38:00
于 2012-06-23T23:07:12.750 回答