2017-06-29 87 views
1

我正在使用以下邏輯進行時間查詢。但我不熟悉時間查詢。誰能幫忙?SQL - 時間範圍(CASE WHEN)

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' 

,如果我瞭解清楚你想要做什麼。

+0

這不起作用的原因有兩個:1)您不能將此條件用作比起始時間更長的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 

希望它可以幫助你!