写PL/SQL发现,
  DBMS_OUTPUT.PUT_LINE(to_date('2010/05/19','yyyy/MM/dd'));
后台输出还是10-05-19
无论格式怎么改都是这样输入,不明白啊!!!用Devoloper来开发的..

解决方案 »

  1.   

    dbms_output.put_line()里面的参数是字符串
    你把字符串转换成date型传入,要正常输出,系统自动将其转换成字符型
    默认的格式就是10-05-19
    可以显式指定格式
    DBMS_OUTPUT.PUT_LINE(to_char(to_date('2010/05/19','yyyy/MM/dd'),'yyyy/mm/dd'));
      

  2.   

    或者更改会话NLS_DATE_FORMAT参数select * from nls_session_parameters where parameter='NLS_DATE_FORMAT';
    PARAMETER                                                    VALUE                                                                            
    ------------------------------------------------------------ -------------------------------------------------------------------------------- 
    NLS_DATE_FORMAT                                              YYYY/MM/DD    execute dbms_output.put_line(sysdate);
    匿名块已完成
    18-5月 -10alter session set NLS_DATE_FORMAT='YYYY/MM/DD';
     alter session set 成功。execute dbms_output.put_line(sysdate);
    2010/05/18
      

  3.   

    to_char, NLS_DATE_FORMAT都被楼上抢了
      

  4.   

    楼上的正解。
    要想在一个Oracle连接会话中始终以统一的方式显示日期格式,一个诀窍就是获取连接以后,立即执行:
    alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'这样每次你输出的日期/时间格式都是标准格式。
      

  5.   

    DBMS_OUTPUT.PUT_LINE(to_char(to_date('2010/05/19','yyyy/MM/dd'),'yyyy/MM/dd'));或者
    alter session nls_date_format='yyyy/mm/dd hh24:mi:ss'
    DBMS_OUTPUT.PUT_LINE(to_date('2010/05/19','yyyy/MM/dd'));
      

  6.   

    DBMS_OUTPUT.PUT_LINE(to_char(to_date('2010/05/19','yyyy/MM/dd'),'yyyy/MM/dd'));
    这个方法用了,
    但alter session nls_date_format='yyyy/mm/dd hh24:mi:ss'在那里去设?
    就是begin end的pl/sql里??PS:  if to_date('2009/05/15') >= to_date(sysdate, 'yyyy/mm/dd') then
        DBMS_OUTPUT.PUT_LINE('true');
      else
        DBMS_OUTPUT.PUT_LINE('false');
      end if;为什么总是为TRUE???
      

  7.   


    在command窗口和sql窗口直接执行都可以,不要放到begin end中
    你还是没明白..date型和varchar的区别
    日期型的转成字符型的才需要to_char,字符型转成日期型才要to_date
    你这里sysdate已经是date型,在to_date一次,会默认先将sysdate to_char转换成字符型,再转到日期型。上面说过的,隐式转换的结果可能会得到你不想要的格式,导致to_date过程中匹配出错。to_date('2009/05/15') 这里写成to_date('2009/05/15','yyyy/mm/dd')
    至于为什么会得到'true'
    你select to_date('2009/05/15'),to_date(sysdate, 'yyyy/mm/dd') from dual;
    看看两个值分别是什么。
    原因可以在select * from nls_session_parameters where parameter='NLS_DATE_FORMAT';
    中找到
      

  8.   

    wildwave 回复很快呀,被抢了.