在我的应用我设置使用下面的命令格式化由程序返回的所有日期的会议NLS_DATE_FORMAT甲骨文NLS_DATE_FORMAT:工作不正常
alter session set nls_date_format='DY DDTH MON YYYY';
这应返回的日期是这样的:“周五23 2013' 年8月
但是,如果我运行下面的查询:
select SYSDATE from dual;
我得到以下格式的日期: 'FRI 2013年8月23日'。注意'23'后缺少'rd'。
如果我运行下面的查询:
select to_char(sysdate, 'DY DDTH MON YYYY') from dual;
日期不回来所需的格式。那么为什么'TH'日期格式参数在通过NLS_DATE_FORMAT设置时不起作用?是否还有其他日期格式参数在使用TO_CHAR时可以工作,但不能通过NLS_DATE_FORMAT?
感谢您的帮助
顺便说一下,我使用Oracle 11.2客户端和数据库。
UPDATE
我在SQL Developer中运行了alter session命令。我在SQL PLUS中试过这个,它以正确的格式返回日期。但是,现在我遇到了插入格式化日期的问题。
如果我这样做(设置NLS_DATE_FORMAT如上)之后,我收到了“ORA-01861的文字不匹配格式字符串”错误:
INSERT INTO DATE_TABLE (MY_DATE_COL) VALUES ('Thu 18th Apr 2013');
我预料到设置NLS_DATE_FORMAT后工作?
如果我改变插入语句:
INSERT INTO DATE_TABLE (MY_DATE_COL) VALUES ('Thu 18 Apr 2013');
然后它的工作!为什么是这样?
DY DDTH MON YYYY – user1578653