在09.00至18.00之间的间隔内有15分钟的间隔请求。
SELECT t.event_date,
case
when TIME_TO_SEC(t.event_date) > inter.begin AND TIME_TO_SEC(t.event_date) < inter.end
then floor((TIME_TO_SEC(t.event_date) - inter.begin) / inter.width)
when TIME_TO_SEC(t.event_date) <= inter.begin
then 0
when TIME_TO_SEC(t.event_date) >= inter.end
then floor((inter.end - inter.begin) / inter.width)
else null
end as full_interval_number
FROM table t,
(select TIME_TO_SEC('09:00:00') as begin,
TIME_TO_SEC('18:00:00') as end,
TIME_TO_SEC('00:15:00') as width
) inter
如何使用WHERE从09.00到10.00小时排除临时intrevalues№0,3,7,15或intrevalues?
这样的事情:
where
TIME_TO_SEC(event_date) < TIME_TO_SEC('09:00:00')
and TIME_TO_SEC(event_date) > TIME_TO_SEC('10:00:00')
或:
where
full_interval_number not in (0, 3, 7, 15)
答案 0 :(得分:0)
where TIME_TO_SEC(event_date) between TIME_TO_SEC('09:00:00') and TIME_TO_SEC('18:00:00')
and not (TIME_TO_SEC(event_date) between TIME_TO_SEC('09:00:00') and TIME_TO_SEC('10:00:00'))
完整查询
SELECT t.event_date,
case
when TIME_TO_SEC(t.event_date) > inter.begin AND TIME_TO_SEC(t.event_date) < inter.end
then floor((TIME_TO_SEC(t.event_date) - inter.begin) / inter.width)
when TIME_TO_SEC(t.event_date) <= inter.begin
then 0
when TIME_TO_SEC(t.event_date) >= inter.end
then floor((inter.end - inter.begin) / inter.width)
else null
end as full_interval_number
FROM table t,
(select TIME_TO_SEC('09:00:00') as begin,
TIME_TO_SEC('18:00:00') as end,
TIME_TO_SEC('00:15:00') as width
) inter
where TIME_TO_SEC(event_date) between TIME_TO_SEC('09:00:00') and TIME_TO_SEC('18:00:00')
and not (TIME_TO_SEC(event_date) between TIME_TO_SEC('09:00:00') and TIME_TO_SEC('10:00:00'))