从《Oracle Database 10gSQL开发指南》(oracle press出版)P103上照抄一个例子:
select MONTHS_BETWEEN('25-MAY-2005','15-JAN-2005') from dual;    然后放到sql worksheet上运行,居然说'25-MAY-2005'是无效的月份。不知道怎么解释这个错误?    运行环境:win xp sp2,  oracle 10g

解决方案 »

  1.   

    估计你的language是中文,你可以试试'25-7月-2005',或把SESSION的语言改一下
    alter session set nls_language=american;
      

  2.   

    select months_between (to_date('25-05-2005','DD-MM-YYYY'),to_date('15-01-2005','dd-MM-yyyy')) from dual;
      

  3.   

    字符集,改一下或者,把may改成05,jan改成01
      

  4.   

    你的Oracle默认语言是中文,但你插入的是英文习惯的日期,在执行你那条select语句之前先改Session:
    alter session set nls_data_language=english;
      

  5.   

    呵呵,zjb正解,months_between函数的参数必须是日期型的