2016-11-16 4 views
0

Accessで簡単なクエリを作成して問題に遭遇しました。MS Access query timeフィールドで、時間が範囲内にあるかどうかを確認します。

基準が#8:00:00 PM#と#1:00:00 AMの場合#私は5時間しか評価されないと予想しますが、それは起こりません。午前8時に発生した午前9時の値を返します。

私はただ1日の特定の時間の間にあることを望むだけです。私はその日が00:00に変更されることを認識しています。しかし、この時間はMidnightのタイムラインに迫っています。

私は表現がおそらく正確に何をしているのか分かりませんが、自分のニーズに合った表現を入力する方法はわかりません。

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

私だけの時間がその場であり、1899年12月30日から来ている見当がつかない(私はF2を打つか、フィールドをクリックすると、日時の値が存在しません)

私は単純なものを見落としていると確信しています。

ありがとうございました。

+0

すべての日付の値は数字です。そんなことはありません。日付がない時間、時間は分数です。 – Fionnuala

+0

HealthVault2.Date_Timeフィールドの値 – Abood

答えて

0

それはこのようなものになるだろう。(次の日になる可能性)のStartTimeについては

WHERE 
    TimeValue(HealthVault2.Time) >= #20:00:00# 
    OR 
    TimeValue(HealthVault2.Time) <= #01:00:00#; 

終了時間まで:

SELECT 
    HealthVault2.Time, HealthVault2.Date_Time 
FROM 
    HealthVault2 
WHERE 
    TimeValue(HealthVault2.Time) Between #00:00:00# And #20:00:00#; 

20時のために1時まで(翌日)

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

度に努めなくHealthVault2 のTimeValue(HealthVault2.Time)> =#06 HealthVault2.Time、HealthVault2.Date_Time を選択するために変更されたとき:00:00# ORのTimeValue(HealthVault2.Time)<=# 10:00:00#; すべての値を返します。 – Wraymac

関連する問題