我正在使用以下逻辑进行时间查询。但我不熟悉时间查询。谁能帮忙?SQL - 时间范围(CASE WHEN)
CASE WHEN (07:00:00) TO (07:10:00) is between [STARTTIME] AND [STOPTIME] THEN 'YES'
开始时间和结束时间都是时间字段
我正在使用以下逻辑进行时间查询。但我不熟悉时间查询。谁能帮忙?SQL - 时间范围(CASE WHEN)
CASE WHEN (07:00:00) TO (07:10:00) is between [STARTTIME] AND [STOPTIME] THEN 'YES'
开始时间和结束时间都是时间字段
为什么不
CASE WHEN '07:00:00' >= [STARTTIME] AND '07:10:00' <= [STOPTIME] THEN 'YES'
,如果我了解清楚你想要做什么。
这不起作用的原因有两个:1)您不能将此条件用作比起始时间更长的07:00:00,并且应该小于停止时间。 2)时间不能与'> =' –
比较是的,这是真的。您必须将其转换为当前日期的日期时间或将其转换为时间戳。 也许你可以使用maketime()来比较它们。 – Kirjava
您无法转换为当天 - 这会影响您与开始时间和停止时间的比较。 –
这是查询: - 我用@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
希望它可以帮助你!
@a_horse_with_no_name MySQL – Angel
开始时间,停止时间是Varchar还是datetime? –
@RohitPadma对不起! StartTime&StopTime是DATETIME字段。 – Angel