2017-06-29 88 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 

希望它可以帮助你!