select to_char(sysdate,'DAY') from dual;
为什么我的程序在windows上跑的时候显示的是:星期五
而我把程序部署到linux上却成了:friday呢?请高手帮忙指点一下迷津,谢谢了。

解决方案 »

  1.   

    -- 一个是中文的日期格式,一个是英文的日期格式,当然不一样啦
    -- 都这样执行,就一致啦:alter session set nls_date_language=american;
      

  2.   

    idle> conn lftest/szty2009hll@sztyoralf7
    已连接。
    lftest@SZTYORA> select to_char(sysdate,'DAY') from dual;TO_CHAR(SYSDATE,'DAY')
    ------------------------
    星期六已用时间:  00: 00: 00.59
    lftest@SZTYORA> alter session set nls_date_language=american;会话已更改。已用时间:  00: 00: 00.45
    lftest@SZTYORA> select to_char(sysdate,'DAY') from dual;TO_CHAR(SYSDATE,'DAY')
    ------------------------------------------------------------------------
    SATURDAY已用时间:  00: 00: 00.48
    lftest@SZTYORA>
      

  3.   

    U should read Oracle Sql Reference,and U can get the answer:
    only one sql,can do it like this:
    DINGJUN123>SELECT TO_CHAR(SYSDATE,'DAY')
      2  FROM DUAL;TO_CHAR(SYSDATE,'DAY')
    ------------------------
    星期六
    DINGJUN123>SELECT TO_CHAR(SYSDATE,'DAY','NLS_DATE_LANGUAGE=AMERICAN')
      2  FROM DUAL;TO_CHAR(SYSDATE,'DAY','NLS_DATE_LANGUAGE=AMERICAN')
    ------------------------------------------------------------------------
    SATURDAY
      

  4.   

    这种方法都没有问题,但是我同样的程序,部署到linux后,调用同样的库,程序执行select to_char(sysdate,'DAY') from dual;这条SQL,结果却是英文的,但是程序在我window下执行是中文的
      

  5.   


    你的linux是英文的
    而window是中文的SQL> select to_char(sysdate,'day') from dual;TO_CHAR(S
    ---------
    星期一
      1* alter session set nls_date_language='american'
    SQL> /会话已更改。SQL>  select to_char(sysdate,'day') from dual;TO_CHAR(SYSDA
    -------------
    monday