写PL/SQL发现,
DBMS_OUTPUT.PUT_LINE(to_date('2010/05/19','yyyy/MM/dd'));
后台输出还是10-05-19
无论格式怎么改都是这样输入,不明白啊!!!用Devoloper来开发的..
DBMS_OUTPUT.PUT_LINE(to_date('2010/05/19','yyyy/MM/dd'));
后台输出还是10-05-19
无论格式怎么改都是这样输入,不明白啊!!!用Devoloper来开发的..
你把字符串转换成date型传入,要正常输出,系统自动将其转换成字符型
默认的格式就是10-05-19
可以显式指定格式
DBMS_OUTPUT.PUT_LINE(to_char(to_date('2010/05/19','yyyy/MM/dd'),'yyyy/mm/dd'));
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
要想在一个Oracle连接会话中始终以统一的方式显示日期格式,一个诀窍就是获取连接以后,立即执行:
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'这样每次你输出的日期/时间格式都是标准格式。
alter session nls_date_format='yyyy/mm/dd hh24:mi:ss'
DBMS_OUTPUT.PUT_LINE(to_date('2010/05/19','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???
在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';
中找到