<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
    ??? 今天想設置一下NLS_DATE_FORMAT參數來更改一下date參數的輸出格式,但是遇到了問題:
    ?
    SQL> select sysdate from dual;
    ?
    SYSDATE
    ---------
    07-NOV-08

    ?
    ??? 剛開始SPFILE里沒有配置NLS_DATE_FORMAT參數的,用了ALTER SYSTEM ... SCOPE=SPFILE居然報錯:
    ?
    SQL> alter system set nls_date_format='YYYY-MM-DD' scope=spfile;
    ?
    alter system set nls_date_format='YYYY-MM-DD' scope=spfile
    ?
    ORA-02096: specified initialization parameter is not modifiable with this option
    ?
    ?
    ?
    ??? 但是使用ALTER SESSION是可以的:
    ?
    SQL> alter session set nls_date_format='yyyy-mm-dd';
    ?
    Session altered.
    ?
    SQL> select sysdate from dual;
    ?
    SYSDATE
    ----------
    2008-11-07
    ?
    ?
    ??? 在查閱文檔后,發現這個參數確實不能通過ALTER SYSTEM命令來修改:
    ?
    You can alter the default value of NLS_DATE_FORMAT by:
    ■ Changing its value in the initialization parameter file and then restarting the
    instance
    ■ Using an ALTER SESSION SET NLS_DATE_FORMAT statement
    ?????????????????????? --《Globalization Support Guide》
    ?
    ?
    ??? 修改了SPFILE,加進了NLS_DATE_FORMAT參數:
    ?
    SQL> select name,value,isspecified from v$spparameter where name='nls_date_format';
    ?
    NAME???????????? VALUE???????? ISSPEC
    ----------?????? ----------??? -------------------------
    nls_date_format? YYYY-MM-DD??? TRUE
    ?
    ?
    ??? 雖然Oracle里的參數換了,但是查詢后的顯示結果任然是一樣的:
    ?
    SQL> select sysdate from dual;
    ?
    SYSDATE
    ---------
    07-NOV-08

    ?
    ??? 在HKEY_LOCAL_MACHINE-SOFTWARE-ORACLE-HOME0中加入NLS_DATE_FORMAT鍵值后,查詢正常:
    ?
    SQL> select sysdate from dual;
    ?
    SYSDATE
    ----------
    2008-11-07
    ?
    ?
    ??? 看來NLS_DATE_FORMAT參數主要還是受到OS的影響,每次登錄時會將OS的NLS_DATE_FORMAT參數加載進去。
    ??? 基本上除了修改環境變量就只能通過alter session來修改了,暫時還沒有找到好一點的辦法。
    ?
    ?
    ??? 要注意并不單是顯示上的問題,而是在內部存儲的值也會被覆蓋:
    ?
    SQL> select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual;
    select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual
    ?????????????? *
    ERROR at line 1:
    ORA-01861: literal does not match format string
    ?
    ??? 在沒有修改環境變量或session參數時,這個語句是無法執行的。修改后可以執行:
    ?
    SQL> select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual;
    ?
    TO_DATE(TO
    ----------
    2008-11-10




    -The End-

    posted on 2008-11-02 19:58 decode360-3 閱讀(1413) 評論(1)  編輯  收藏 所屬分類: Oracle

    評論

    # re: NLS_DATE_FORMAT參數[未登錄] 2009-12-20 20:31 Frank
    呵呵,樓主搞混了
    其實nls_date_format參數(也包括其他nls_參數)是分服務器端和客戶端的.

    樓主想要獲得查詢的格式是yyyy-mm-dd,那么只有alter session和修改windows鍵值是其作用的.修改oracle啟動參數是與查詢無關的,那是數據庫表內date類型插入需要的格式.  回復  更多評論
      

    主站蜘蛛池模板: 免费看污成人午夜网站| 黄页免费在线观看| 男女啪啪永久免费观看网站| 色拍自拍亚洲综合图区| 亚洲a一级免费视频| 久久亚洲国产精品| 四虎影视在线影院在线观看免费视频| 国产亚洲精品线观看动态图| a级毛片在线免费| 国产亚洲欧洲精品| 人妻丰满熟妇无码区免费| 亚洲成a人片在线观看中文动漫| 1000部免费啪啪十八未年禁止观看| 97久久精品亚洲中文字幕无码| 19禁啪啪无遮挡免费网站| 亚洲国产精品久久网午夜| 日韩免费精品视频| 亚洲AV无码一区二区一二区| 亚洲精品无码久久久| 久久久WWW免费人成精品| 亚洲网站在线观看| 欧美大尺寸SUV免费| 日韩毛片免费一二三| 亚洲处破女AV日韩精品| 亚洲一级毛片免费看| 亚洲日韩精品国产一区二区三区 | 免费在线视频你懂的| 精品久久久久久亚洲精品| 手机看片久久国产免费| 在线观看免费无码视频| 亚洲视频一区二区在线观看| 精品无码国产污污污免费| 九九免费久久这里有精品23| 亚洲AV永久无码精品| 永久免费毛片手机版在线看| 巨胸狂喷奶水视频www网站免费| 99久久亚洲综合精品成人网| 18禁无遮挡无码网站免费| 一级看片免费视频| 色偷偷女男人的天堂亚洲网| 国产精品亚洲综合专区片高清久久久|