F_ENDDATE里面是否存在非法的时间?使用ISDATE看看.
确定输入表达式是否为有效的日期。语法
ISDATE ( expression ) 参数
expression一个表达式,将要验证它是否为一个日期。expression 是任何返回 varchar 数据类型的表达式。 返回类型
int

解决方案 »

  1.   

    或者改为:( '2008-09-24 08:00:00 '> = F_BEGINDATE AND '2008-09-24 09:00:00 ' <=F_ENDDATE)试试
      

  2.   

    F_BEGINDATE 和F_ENDDATE在数据库中都是datetime类型的字段,存储的类型都是2008-09-23 08:00:00.000形式的
      

  3.   

    如果是这样,数据应该是没有问题的.你试试select F_BEGINDATE from tb order by F_BEGINDATE
    select F_BEGINDATE from tb order by F_BEGINDATE desc
    select F_ENDDATE from tb order by F_ENDDATE
    select F_ENDDATE from tb order by F_ENDDATE desc看看数据有没有异常?
      

  4.   

    -- 试试显式指定日期样式
    select   *   from   t_hzoa_app_rcrl   
    where   OWNER   Like   '%admin% '   
    AND   ( CONVERT(datetime, '2008-09-24   08:00 ', 120)> =   F_BEGINDATE  
     AND   CONVERT(datetime, '2008-09-24   09:00 ', 120) <=F_ENDDATE)
      

  5.   

    把时间强行转换.select * from t_hzoa_app_rcrl where OWNER Like '%admin% ' AND ( '2008-09-24 08:00 '> = convert(varchar(15),F_BEGINDATE,120) AND '2008-09-24 09:00 ' <=convert(varchar(15),F_ENDDATE,120))
      

  6.   

    强制转换时间 ,改为
    select   *   from   t_hzoa_app_rcrl   where   OWNER   Like   '%admin% '   AND   (  CONVERT(datetime, '2008-09-24   08:00 ', 120)> =   F_BEGINDATE   AND    CONVERT(datetime, '2008-09-24   09:00 ', 120) <=F_ENDDATE)
      

  7.   

    这个,varchar类型可以比较大小么
      

  8.   

    CONVERT我早就试过了,还是报这个错
      

  9.   

    不会吧,你只取一条记录试试,就是加个条件.select   *   from   t_hzoa_app_rcrl   where   OWNER   Like   '%admin% '   AND   F_BEGINDATE = '你表中存在的某个时间'
      

  10.   

    查询分析器直接执行这个会报错吗?SELECT CONVERT(datetime, '2008-09-24   08:00 ', 120)
      

  11.   

    楼主出问题的时候, 参数确定和发出现的数据是一样的? 如果是一样的话, 可以试试把字符串中的日期数据使出来在查询分析器中convert一下看看
      

  12.   


    服务器: 消息 242,级别 16,状态 3,行 1
    从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
      

  13.   

    SELECT CONVERT(datetime, '2008-09-24 08:00:00', 120) 
    select cast('2008-09-24 08:00:00' as datetime)你中间有几个空格,不是这个原因吧?
      

  14.   


    不会吧:
    SELECT CONVERT(datetime, '2008-09-24  08:00 ', 120) 结果:
    2008-09-24 08:00:00.000
      

  15.   

    其实除了CONVERT查询分析器会直接报错,其余的都是可以正常执行,但tomcat服务器报错,那条sql语句也是System.out.println出来的
      

  16.   

    declare @t table(d char(50))
    insert @t select '2008-09-21                   08:00     'select datediff(dd,d,getdate()) from @t
    select datediff(dd,'2008-09-21                   08:00     ',getdate())
    /*
    3
    ----
    3
    */没有什么问题,是不是有什么特殊字符?
      

  17.   

    我搞错了,SELECT CONVERT(datetime, '2008-09-24  08:00 ', 120) 可以正常执行下面这条语句才会报那条错
    select * from t_hzoa_app_rcrl where OWNER Like '%admin%' AND (CONVERT(datetime,'2008-09-24 23:00',120)>= F_BEGINDATE AND CONVERT(datetime,'2008-09-24 24:00',120)<=F_ENDDATE)
      

  18.   

    出什么错误?sql语句好像没有什么太大的问题啊
      

  19.   

    先说说这条语句查询分析器为什么会直接报错吧select * from t_hzoa_app_rcrl where OWNER Like '%admin%' AND (CONVERT(datetime,'2008-09-24 23:00',120)>= F_BEGINDATE AND CONVERT(datetime,'2008-09-24 24:00',120) <=F_ENDDATE)
      

  20.   

    看看
    SELECT @@LANGUAGE 
    的结果是什么? (理论上应该和越界没有关系)
      

  21.   

    哦,不是的,因为我这个页面有8:00到23:00一大堆SQL语句,偶又一直没有找到关键所在,所以给出的SQL语句不一样,谢了问题解决了