2016-12-20 11 views
4

SQL ServerにStart_Time(Time(7))とEnd_Time(Time(7))を格納するテーブルがあります。それに記憶されているSQL Server時刻と深夜0時を比較して

値が

    Start_Time  End_Time 
        15:00:00.0000000 01:00:00.0000000 

である私は、この行を返す必要がクエリを有する:MyTime値について

    Select * from Table Where MyTime >= Start_Time and MyTime < 
        End_Time 

=午後04時00分00秒、これは、1つの行を返すべき。しかし、End_Timeは真夜中の後であるため、行は返されません。このStart_TimeおよびEnd_Timeテーブルを汎用テーブルとして使用して、データを取得するために別のテーブルと結合するときに、Date + Time列を使用することはできません。

誰かが列の種類を変更せずにこの問題に対する回避策を提案できますか。

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

答えて

3

あなたのWHERE句には、このオプションを含める必要があります。

Select * 
from Table 
Where (Start_Time > End_time AND myTime >= start_time) -- Answer your case 
    OR MyTime between start_time and end_time -- All the rest 
1

あなたは開始時刻と終了時刻を比較して、比較ロジックでこれを使用することができます。

Select t.* 
from Table t 
Where (Start_time <= End_time and MyTime >= Start_Time and MyTime < End_Time) or 
     (Start_time > End_time and MyTime < Start_Time and MyTime >= End_Time); 
関連する問題