SELECT count(*) FROM Alert where '2012-04-30'<= firstTime上面的语句执行没有问题
  SELECT count(*) FROM Alert where '2012-04-30'<= firstTime and firstTime <= '2012-05-07'当多加一个条件的时候 报错 无效的月份 请问这是为什么

解决方案 »

  1.   

    select 1 from dual where to_date(20120430,'yyyymmdd')<=sysdate and sysdate<=to_date(20120508,'yyyymmdd');
    亲测这句SQL语法是没有问题的,楼主可以把测试数据整理一下发上来吗?
      

  2.   

       timestamp 类型
      

  3.   

       timestamp 类型
      

  4.   

    这样呢?SELECT count(*) FROM Alert where date'2012-04-30'<= firstTime and firstTime <= date'2012-05-07'
      

  5.   

    表达式的两边,一边是字符串,一边是时间类型,不能直接比较。如果看执行计划,你就可以看到进行了什么样的隐式转换了
    隐式转换使用了如下的时间格式
    select * from nls_session_parameters where parameter='NLS_DATE_FORMAT';
    很明显,你用的字符串格式和它不一致
      

  6.   

    很奇怪的语法,不过,倒也说明了oracle的自行处理逻辑。
    这种错,别人还真不太好犯,希望楼主多多犯错,让大家多多学习。