在访问查询中搜索日期和时间

时间:2012-06-23 22:49:30

标签: sql date ms-access-2003

我在桌子上有以下数据 tbl门票:日期和时间是两个不同的字段,以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分之间的固定间隔) - 例如使用参数。 我使用Access 2003。 我尝试了几个查询,但我无法完善 - 我没有得到准确的结果。 有人请帮忙。

谢谢,

此致

2 个答案:

答案 0 :(得分: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列中传递的值中的任何时间部分都被切断,只有'07:00'和{{1使用。

答案 1 :(得分: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