在Access中构建一个简单的查询并遇到问题。
如果标准介于#8:00:00 PM#和#1:00:00 AM#我预计只会评估5个小时,但这不会发生。它返回上午8:00(上午9:00)发生的值,依此类推。
我只想将结果在一段时间内持续1天,我意识到这一天在00:00发生变化:但有几次工作日这段时间超过了午夜时间线。< / p>
我意识到表达式可能完全符合预期,但不知道如何输入符合我需要的表达式。
The SQL is: SELECT HealthVault2.Time, HealthVault2.Date_Time
FROM HealthVault2
WHERE (((HealthVault2.Time) Between #12/30/1899 20:0:0# And #12/30/1899 1:0:0#));
我不知道12/30/1899来自哪里,该字段只有一段时间(当我点击F2,或点击字段时,没有日期时间值)
我确信我忽视了一些简单的事情。
感谢您的帮助。
答案 0 :(得分:0)
这将是这样的:
SELECT
HealthVault2.Time, HealthVault2.Date_Time
FROM
HealthVault2
WHERE
TimeValue(HealthVault2.Time) Between #00:00:00# And #20:00:00#;
20:00至01:00(次日):
WHERE
TimeValue(HealthVault2.Time) >= #20:00:00#
OR
TimeValue(HealthVault2.Time) <= #01:00:00#;
对于StartTime到EndTime(可能是第二天):
PARAMETERS
StartTime DateTime, EndTime DateTime;
SELECT
HealthVault2.Time, HealthVault2.Date_Time
FROM
HealthVault2
WHERE IIF(StartTime <= EndTime,
TimeValue(HealthVault2.Time) >= StartTime
AND
TimeValue(HealthVault2.Time) <= EndTime,
TimeValue(HealthVault2.Time) >= StartTime
OR
TimeValue(HealthVault2.Time) <= EndTime);
- or simplified:
WHERE
(StartTime <= EndTime)
XOR
(TimeValue(HealthVault2.Time) >= StartTime
AND
TimeValue(HealthVault2.Time) <= EndTime);