Oracle日期格式问题

本文解决了在不同语言环境下执行SQL语句时遇到的问题,特别是关于日期格式的跨语言兼容性。通过修改客户端的NLS_DATE_LANGUAGE参数,使得使用英文月份格式的SQL语句能够正确执行。文章详细介绍了如何通过SQL命令调整日期显示语言,以及如何计算日期之间的差异。通过实例演示了调整日期格式和执行日期计算的方法,确保了在不同语言环境中SQL查询的准确性和效率。

一、日期格式修改

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.111995.9.1之间总共跨越了几个月

SQL> select months_between ('01-SEP-95','11-JAN-94') from dual;

 

MONTHS_BETWEEN('01-SEP-95','11-JAN-94')

--------------------------------------------

                            19.6774193548387

转载于:https://www.cnblogs.com/ChenJw/archive/2012/02/18/2357177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值