一、日期格式修改
SQL>select sysdate from dual;
SYSDATE
---------------
19-OCT-09
SQL>alter session set nls_date_format="MON-DD-YYYY";
Session altered.
SQL>select sysdate from dual;
SYSDATE
-----------------
OCT-19-2009
SQL>
二、日期语言问题
以英语显示日期--- alter session set nls_date_language='american';
1,摘要:
在自己电脑上用PL/SQL查询时间报错,报错代码是:ORA-01843: not a valid month
这是因为客户端是中文环境,格式mon就不能用英文的月份写法,必须用中文的“六月”
如果不想修改sql,那么请修改nls_date_language。详情请继续往下看!
执行下面的语句时报错了:
select months_between ('01-SEP-95','11-JAN-94') from dual;
我把日期中的英文月份改为汉字后执行就ok
select months_between ('01-9月-95','11-1月-94') from dual;
19.6774193548387
2,下来我们思考如何才能让日期格式为英文月份的语句正确执行呢?
--用sql语句修改客户端的nls_date_language即可:
SQL> alter session set nls_date_language='american';
Session altered
到这里就设置好了,下面的语句就能正确执行了!
--2008.1.11之后6个月是什么日期
SQL> select ADD_MONTHS ('11-JAN-2008',6) from dual;
ADD_MONTHS('11-JAN-2008',6)
---------------------------
2008-7-11
--1994.1.11至1995.9.1之间总共跨越了几个月
SQL> select months_between ('01-SEP-95','11-JAN-94') from dual;
MONTHS_BETWEEN('01-SEP-95','11-JAN-94')
--------------------------------------------
19.6774193548387