SQL如何在我的查询中正确使用where运算符?

时间:2018-04-15 14:52:13

标签: mysql sql database

在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)

1 个答案:

答案 0 :(得分:0)

这是你想要的吗?第一部分是9-18的一般限制,第二部分是排除9-10之间的值的具体要求

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'))