select next_day(sysdate,'Wednesday')from dual;
为什么这个执行的时候一直报错啊??我的数据库是10G的,在线等!!!!!!!!

解决方案 »

  1.   

    应该是和你的日期格式有关,最好用数字表示,可以避免问题的发生。SQL> select next_day(sysdate,4)from dual;NEXT_DAY(SYSDATE,4)
    -------------------
    2010-1-27 17:33:13SQL> select next_day(sysdate,'星期三')from dual;NEXT_DAY(SYSDATE,'星期三')
    --------------------------
    2010-1-27 17:33:25SQL> select next_day(sysdate,'Wednesday')from dual;select next_day(sysdate,'Wednesday')from dualORA-01846: 周中的日无效SQL> 
      

  2.   

    楼主结贴这是应为你的字符集设置的原因。
    NEXT_DAY(date,char)   
      date参数为日期型,   
        char:为1~7,周日到周六。
        如果你的NLS_DATE_LANGUAGE是汉字的话,char可以是1-7或者星期一到星期日
    可以这样修改下  
      alter   session   set   NLS_DATE_LANGUAGE   =   American;
    在select   NEXT_DAY   (sysdate,   'MONDAY')   FROM   DUAL;   
    就OK了 
      

  3.   

    alter  session  set  NLS_DATE_LANGUAGE  =  'SIMPLIFIED CHINESE';
    SQL> select next_day(sysdate,4)from dual; NEXT_DAY(SYSDATE,4) 
    ------------------- 
    2010-1-27 17:33:13 SQL> select next_day(sysdate,'星期三')from dual; NEXT_DAY(SYSDATE,'星期三') 
    -------------------------- 
    2010-1-27 17:33:25NEXT_DAY(date,char)  
      date参数为日期型,  
        char:为1~7,周日到周六。 
        如果你的NLS_DATE_LANGUAGE是汉字的话,char可以是1-7或者星期一到星期日 
    可以这样修改下 alter  session  set  NLS_DATE_LANGUAGE  =  American;  
    select  NEXT_DAY  (sysdate,  'MONDAY')  FROM  DUAL; SQL code
    SQL> ALTER SESSION SET NLS_LANGUAGE=american;
    Session altered.将语言改回中文:
    SQL> ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';
    会话已更改。将地域改为英文:
    SQL> ALTER SESSION SET NLS_TERRITORY=america;
    会话已更改。将地域改为中文:
    SQL> ALTER SESSION SET NLS_TERRITORY=CHINA;会话已更改。