菜鸟提问:
      求一时间段外数据: 08:00 --20:00
   必须在08:00之前和20:00之后,又不包含08:00和20:00   

解决方案 »

  1.   

    select * 
    from tbname
    where CONVERT(varchar(100),tcol, 108)<'08:00:00' and CONVERT(varchar(100),tcol, 108)>'20:00:00' 
      

  2.   

    select * 
    from tb 
    where cast(convert(char,datecol,8) as datetime) not between '8:00' and '20:00'
      

  3.   

    不好意思,问题补充
       页面要输入开始时间和结束时间
    select * from V_DiscountItemTimeList where itemName="+itemName+" AND ('"+beginTime+"' not between beginTime and endTime and '"+endTime+"' not between beginTime and endTime) 这样好像不对哦
      

  4.   

    select * from V_DiscountItemTimeList where itemName="+itemName+" AND (cast('"+beginTime+"' as datetime) not between beginTime and endTime and cast('"+endTime+"' as datetime) not between beginTime and endTime)  
      

  5.   

    beginTime  endTime 数据类型是什么,如果不是datetime,在表中存储的数据是什么样?
      

  6.   

    select * 
    from tb 
    where cast(convert(char,beginTime,8) as datetime) not between '8:00' and '20:00'
       and cast(convert(char,endTime,8) as datetime) not between '8:00' and '20:00'如果是DATETIME型,这样应该可以。
      

  7.   

    你这里输入的查询时间有开始时间和结束时间,那你要怎么用这个条件呢
    1、开始时间 在08:00之前或在20:00之后 -> 开始时间 not between '8:00' and '20:00'
    2、结束时间 在08:00之前或在20:00之后 -> 结束时间 not between '8:00' and '20:00'
    3、开始时间 在08:00之前或在20:00之后 并且 结束时间 在08:00之前或在20:00之后 
     -> 开始时间 not between '8:00' and '20:00' and  结束时间 not between '8:00' and '20:00'
    4、开始时间 - 结束时间 与 08:00 - 20:00 没有交集
     ->(开始时间<'8:00' and  结束时间<'8:00' ) or (开始时间>'20:00' and  结束时间>'20:00' )
      

  8.   

    表中时间用int型的小时和分钟,然后我用自定义函数在视图拼成varchar型的,所以beginTime,endTime(varchar型)不用转换直接用string就能查询
    虽然没搞定,但也得睡觉~~呵呵
      

  9.   

    问题很简单啊.数据库中的日期时间格式是一个浮点数.整数部分为日期,小数部分为时间,取datetime的小数部分就成了