2017-06-29 22 views
1

私は、次のロジックで時間クエリに取り組んでいます。しかし、私は時間のクエリに精通していない。誰も助けることができますか?私はあなたが何をしたいのか明確に理解していればSQL - 時間範囲(ケース時)

CASE WHEN (07:00:00) TO (07:10:00) is between [STARTTIME] AND [STOPTIME] THEN 'YES' 

開始時間と終了時間は

+0

@a_horse_with_no_name MySQL – Angel

+0

開始時間、停止時間はVarcharまたはdatetimeですか? –

+0

@RohitPadmaそのことについて申し訳ありません! StartTime&StopTimeはDATETIMEフィールドです。 – Angel

答えて

0

なぜ

CASE WHEN '07:00:00' >= [STARTTIME] AND '07:10:00' <= [STOPTIME] THEN 'YES' 

両方のDateTimeフィールドです。

+0

これは2つの理由で機能しません:1)starttimeよりも大きい07:00:00としてこの条件を使用することはできず、停止時間よりも短くなければなりません。 2)時間は '> ='と比較できません –

+0

はい、それは本当です。現在の日付で日付時刻に変換するか、タイムスタンプに変換する必要があります。 maketime()を使って比較することができます。 – Kirjava

+0

現在の日に変換することはできません。これは、開始時刻と停止時刻との比較に影響します。 –

0

ここでは次のクエリがあります: - @start_Time(STARTIME用)と@end_Time(STOPTIME用)をローカル変数として使用しました。 (あなたが言ったように、私はそれらの値の間に取り込んでいますが、それらの時間も含めなければならない場合は> =と同じ値をとる必要があります。<と同じものを< =と置き換えます)。

select CASE WHEN ((time_to_sec(timediff('07:00:00', time(@Start_Time))))>0 
      AND (time_to_sec(timediff('07:00:00', time(@end_Time))))<0) 
    AND 
     ((time_to_sec(timediff('07:10:00', time(@Start_Time))))>0 
      AND (time_to_sec(timediff('07:10:00', time(@end_Time))))<0) =1 
      THEN 'YES' else 'NO' END 

希望しますように!

関連する問題