ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle的NLS_DATE_FORMAT设置(日期格式设置)

2021-04-13 08:54:12  阅读:263  来源: 互联网

标签:NLS format FORMAT 设置 SQL disk channel


Oracle的NLS_DATE_FORMAT设置(日期格式设置)

 

真题1、   在   Oracle   中,如何让日期显示为“年   -   月   -   日 时   :   分   :   秒”的格式?


答案:   Oracle   的日期默认显示为以下格式:

SYS@PROD1> select sysdate from dual;

 

SYSDATE

---------

22-DEC-17

阅读不方便,此时可以通过设置   NLS_DATE_FORMAT   来让日期显示更人性化,可以有如下几种方式:

①    在会话级别运行命令:“   ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';   ”,只在会话级别起作用。

②    在文件   $ORACLE_HOME/sqlplus/admin/glogin.sql   中加入:“   ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';   ”,这样每个会话都会起作用。

③    修改初始化参数:“   ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';   ”,每个会话都起作用。

④    设置环境变量   NLS_DATE_FORMAT   ,但是必须和   NLS_LANG   一起设置,否则不会生效,可以直接在会话窗口使用   export   或   .bash_profile   配置文件(全局应用)设置,如下所示:

export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK   #   或:   export NLS_LANG=AMERICAN

若是   Windows   环境,则可以使用如下命令:

SETX "NLS_DATE_FORMAT"  "YYYY-MM-DD HH24:MI:SS"

SETX "NLS_LANG"  "AMERICAN_AMERICA.ZHS16GBK"

使用以上任意一种方法设置,效果如下:

SYS@PROD1>  ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';

 

Session altered.

 

SYS@PROD1> select sysdate from dual;

 

SYSDATE

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

2017-12-22 06:51:18

 







 

 

1:在会话级别设置nls_date_format对应的日期格式。

 

使用alter session set nls_date_format='xxxx'设置只会影响当前会话的。这个对所有工具(SQL*Plus、SQL Developer)都能生效。

 

 

SQL> select sysdate from dual;

   

 

   

SYSDATE

   

---------

   

14-SEP-17

   

 

   

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

   

 

   

Session altered.

   

 

   

SQL> select sysdate from dual;

   

 

   

SYSDATE

   

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

   

2017-09-14 08:33:17

   

 

   

SQL>

 

 

2:如果只是SQL*Plus,可以在SQL*Plus的环境变量设置文件login.sql或glogin.sql中来设置。

 

SQL*Plus启动的时候首先会先运行glogin.sql脚本,然后查找当前目录下是否存在login.sql文件,如果找到则运行该脚本,如果当前目录不存在login.sql.则查找是否设置了SQLPATH环境变量,找到了就会去执行该环境变量路径下的login.sql脚本,否则则会停止继续查找。 glogin.sql文件位于$ORACLE_HOME/sqlplus/admin下.可以在glogin.sql文件下增加一条语句alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

 

 

clip_image001  

 

 

3:       修改数据库的参数,需要重启数据库后生效        

 

 

 

SQL> show parameter nls_date_format;

   

 

   

NAME                                 TYPE        VALUE

   

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

   

nls_date_format                      string

   

SQL> alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;

   

 

   

System altered.

   

 

   

SQL>

 

这个是全局的,有时候影响非常大,所以必须格外小心,要确保不影响各个系统和应用的前提下修改!

 

 

 

 

4      :修改   Linux   环境变量,在环境变量中设置日期格式。

 

 

注意:环境变量NLS_DATE_FORMAT必须和NLS_LANG一起设置,否则不会生效(这个才是总结这篇文章的初衷,以前一直没有注意这个问题)。可以直接在会话窗口使用export或       .bash_profile     配置文件(全局应用)设置。

 

下面我们来测试一下看看,如下所示:

 

[oracle@DB-Server ~]$ sqlplus / as sysdba

   

 

   

SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 13 09:40:48 2017

   

 

   

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

   

 

   

 

   

Connected to:

   

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

   

With the Partitioning, OLAP, Data Mining and Real Application Testing options

   

 

   

SQL> select sysdate from dual;

   

 

   

SYSDATE

   

---------

   

13-SEP-17

   

 

   

SQL> exit

   

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

   

With the Partitioning, OLAP, Data Mining and Real Application Testing options

   

[oracle@DB-Server ~]$ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';

   

[oracle@DB-Server ~]$ sqlplus / as sysdba

   

 

   

SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 13 09:41:22 2017

   

 

   

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

   

 

   

 

   

Connected to:

   

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

   

With the Partitioning, OLAP, Data Mining and Real Application Testing options

   

 

   

SQL> select sysdate from dual;

   

 

   

SYSDATE

   

---------

   

13-SEP-17

   

 

   

SQL> exit

   

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

   

With the Partitioning, OLAP, Data Mining and Real Application Testing options

   

[oracle@DB-Server ~]$ export NLS_LANG=AMERICAN

   

[oracle@DB-Server ~]$ sqlplus / as sysdba

   

 

   

SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 13 09:41:50 2017

   

 

   

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

   

 

   

 

   

Connected to:

   

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

   

With the Partitioning, OLAP, Data Mining and Real Application Testing options

   

 

   

SQL> select sysdate from dual;

   

 

   

SYSDATE

   

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

   

2017-09-13 09:41:58

   

 

   

SQL>




今天想做个rman基于时间点的恢复实验,需要设置下nls_data_format参数,在linux下用export nls_date_format='yyyy-mm-dd hh24:mi:ss'命令就可以设置,但是在windows环境下如果带单引号设置,登录rman会报错,后经google发现在windows环境下设置这个变量不需要加引号,直接set nls_date_format=yyyy-mm-dd hh24:mi:ss即可。

run {
sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';
sql 'alter session set NLS_LANGUAGE="AMERICAN"';
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate channel c5 type disk;
allocate channel c6 type disk;
allocate channel c7 type disk;
allocate channel c8 type disk;
allocate channel c9 type disk;
allocate channel c10 type disk;
allocate channel c11 type disk;
allocate channel c12 type disk;
backup as compressed backupset FILESPERSET 1 database format 'd:\dbback\FULL_%d_%U.full' section size 100G;
sql 'alter system archive log current';
backup as compressed backupset archivelog all  format 'd:\dbback\ARC_%d_%U.arc' section size 100G;
backup current controlfile format 'd:\dbback\cf_%d_%U.ctl';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
release channel c9;
release channel c10;
release channel c11;
release channel c12;
}

 


标签:NLS,format,FORMAT,设置,SQL,disk,channel
来源: https://blog.51cto.com/lhrbest/2702371

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有