2016-11-16 90 views
0

只需在Access中構建簡單的查詢並且遇到問題。MS Access查詢時間字段,確定時間是否在範圍之間

如果標準在#8:00:00 PM#和#1:00:00 AM#之間#我預計只有5個小時被評估,但是這不會發生。它返回上午8:00上午9:00發生的值等等。

我只是希望結果在1天的特定時間之間,我意識到當天在00:00會發生變化:但是有幾次這個時間會在午夜時間線上落下。

我意識到表達式可能正在做它應該做的事情,但不知道如何輸入符合我需要的表達式。

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

所有日期值都是數字。沒有日期沒有這樣的事情,時間就是分數。 – Fionnuala

+0

您在HealthVault2.Date_Time字段中的值是什麼 – Abood

回答

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#; 

爲開始時間到結束時間(可能是第二天):

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); 
+0

將超出預期範圍的更多值返回。我認爲它需要指定日期範圍的參數(基於Fionnuala的正確觀察) – Wraymac

+0

錯過了01:00。現在添加。請參閱編輯。 – Gustav

+0

Works以一定程度,但是當改變爲選擇HealthVault2.Time,HealthVault2.Date_Time FROM HealthVault2 WHERE TIMEVALUE(HealthVault2.Time)> =#06:00:00# OR TIMEVALUE(HealthVault2.Time)<=# 10:00:00#; 返回所有值 – Wraymac

相關問題