TO_CHAR()函数中日期格式的使用--NLS_PARAMS

1. to_char() 是用于将日期、数字格式改成文本格式呈现

其参数 为 to_char(values, 'format','NLS_PARAM')

values--需要转变的值

'format'--希望呈现的格式

'NLS_PARAM'  ---可以是多种NLS_参数值,用于在to_char中临时指定 NLS_的显示形式

 

实例:

SQL> set linesize 200

SQL> show parameter nls_date_language

NAME                     TYPE            VALUE

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

nls_date_language             string            AMERICAN

SQL> show parameter nls_date_format

NAME                     TYPE            VALUE

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

nls_date_format              string            DD-MON-RR

SQL> select sysdate from dual;   --不加输出格式时,就是使用默认的日期格式 DD-MON-RR,日期描述语言也是默认的日期用语言AMERICAN

SYSDATE

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

04-DEC-15

SQL> select to_char(sysdate,‘yyyy-mm-dd‘) from dual;  --指定输出格式为‘yyyy-mm-dd‘

TO_CHAR(SYSDATE,‘YYY

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

2015-12-04

在日期格式中,对月份的格式主要有以下几种:

mm: 以数字表示(1-12)

mon: 相应语言月的简写,比如英文中12月的简写是 dec.

MON: 功能同上,只不过简写换为大写

month: 相应语言月的全称,比如英文中的12月写为december。

MONTH:功能同上,只不过换为大写表示

SQL> select to_char(sysdate,‘yyyy-mon-dd‘) from dual; 

TO_CHAR(SYSDATE,‘YYYY-MON-DD‘)

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

2015-dec-04

SQL> select to_char(sysdate,‘yyyy-month-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MONTH-DD‘)

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

2015-december -04

SQL> select to_char(sysdate,‘yyyy-MONTH-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MONTH-DD‘)

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

2015-DECEMBER -04

在日期格式中,对日的格式主要有以下几种:

dd: 以数字表示(1-31)

dy: 相应语言中对周中每一天的称谓的简写。比如英文中星期五的简写是fri.

DY: 功能同上,换为大写表示

Dy: 功能同上,换为首字母大写表示

day:相应语言中对周中每一天的称谓的全称。比如英文中星期五的全称是friday.

DAY:功能同上,换为大写表示

Day:功能同上,换为首字母大写表

SQL> select to_char(sysdate,‘yyyy-mm-Dy‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DY‘)

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

2015-12-Fri

SQL> select to_char(sysdate,‘yyyy-mm-dy‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DY‘)

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

2015-12-fri

SQL> select to_char(sysdate,‘yyyy-mm-DY‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DY‘)

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

2015-12-FRI

SQL> select to_char(sysdate,‘yyyy-mm-day‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DAY‘)

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

2015-12-friday

SQL> select to_char(sysdate,‘yyyy-mm-dd day‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DDDAY‘)

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

2015-12-04 friday

格式后缀

SP:相应日期部分的英文拼写

TH:相应日期部分日的序号,即在表示日的数字后加"th"

SQL> select to_char(sysdate,‘yyyy-mm-ddth‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM

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

2015-12-04th

SQL> select to_char(sysdate,‘yyyy-mm-ddspth‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DDSPTH‘)

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

2015-12-fourth

SQL> select to_char(sysdate,‘yyyy-mmsp-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MMSP-D

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

2015-twelve-04

SQL> select to_char(sysdate,‘yyyy-mmspth-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MMSPTH-DD‘

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

2015-twelfth-04

SQL> select to_char(sysdate,‘yyyyth-mm-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYYTH-

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

2015th-12-04

SQL> select to_char(sysdate,‘yyyy-mm-ddthsp‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DDTHSP‘)

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

2015-12-fourth

SQL> select to_char(sysdate,‘yyyysp-mm-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYYSP-MM-DD‘)

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

two thousand fifteen-12-04

year: 把年数用英文拼写的方式输出

YEAR:功能同上,只不过大写输出

SQL> select to_char(sysdate,‘year-mm-dd‘) from dual;

TO_CHAR(SYSDATE,‘YEAR-MM-DD‘)

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

twenty fifteen-12-04

 

把nls_date_language设为中文后,相应的月份和星期几用中文表示。

SQL> alter session set nls_date_language=‘simplified chinese‘;   --参数中间有空格时,要用单引号把整个参数括起来。

Session altered.

SQL> show parameter nls_date

NAME                     TYPE            VALUE

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

nls_date_format              string            DD-MON-RR

nls_date_language             string            simplified chinese

SQL> select to_char(sysdate,‘yyyy-mm-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYY

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

2015-12-04

SQL> select to_char(sysdate,‘yyyy-mon-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MON-DD‘)

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

2015-12月-04

SQL> select to_char(sysdate,‘yyyy-month-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MONTH-DD‘)

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

2015-12月-04

中文对日期的表示没有大小写和缩写的概念,Dy,DY,dy均是同样的输出,其它同。

SQL> select to_char(sysdate,‘yyyy-mm-Dy‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DY‘)

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

2015-12-星期五

SQL> select to_char(sysdate,‘yyyy-mm-DY‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DY‘)

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

2015-12-星期五

SQL> select to_char(sysdate,‘yyyy-mm-day‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DAY‘)

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

2015-12-星期五

SQL> select to_char(sysdate,‘yyyy-mm-dd day‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DDDAY‘)

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

2015-12-04 星期五

year,TH和SP只限于用英文输出表示

SQL> select to_char(sysdate,‘yyyy-mm-ddspth‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DDSPTH‘)

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

2015-12-fourth

SQL> select to_char(sysdate,‘yyyysp-mm-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYYSP-MM-DD‘)

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

two thousand fifteen-12-04

SQL> select to_char(sysdate,‘year-mm-dd‘) from dual;

TO_CHAR(SYSDATE,‘YEAR-MM-DD‘)

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

twenty fifteen-12-04


SQL> select to_char(sysdate,‘yyyysp-mmsp-ddsp‘) from dual;


TO_CHAR(SYSDATE,‘YYYYSP-MMSP-DDSP‘)
----------------------------------------------------------------------------------------------------------------------------
two thousand fifteen-twelve-four

 

dl:长日期格式输出

SQL> select to_char(sysdate,‘DL‘) from dual;

TO_CHAR(SYSDATE,‘DL‘)

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

星期五, 12月 04, 2015

修改日历为中华民国日历后,纪年变为民国纪写

SQL> alter session set nls_calendar=‘ROC Official‘;

Session altered.

SQL> select to_char(sysdate,‘DL‘) from dual;   --2015-1911=104,即公元2015年就是民国104年

TO_CHAR(SYSDATE,‘DL‘)

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

104年12月4日 星期五

e: 相应纪年的简称

ee: 相应纪年的全称

SQL> select to_char(sysdate,‘year-mm-dd e‘) from dual;

TO_CHAR(SYSDATE,‘YEAR-MM-DDE‘)

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

one hundred four-12-04 民國

SQL> select to_char(sysdate,‘EE‘) from dual;

TO_CHAR(SYSDATE,‘EE‘)

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

中華民國

可以在函数中指定NLS参数,整个参数和值要用单引号(‘)括起来,从而只对该次执行生效。

SQL> select to_char(sysdate,‘yyyy-mm-dd‘,‘nls_calendar=GREGORIAN‘) from dual;

TO_CHAR(SYSDATE,‘YYY

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

2015-12-04

SQL> select to_char(sysdate,‘yyyy-mon-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MON-DD‘)

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

0104-12-04

SQL> alter session set nls_calendar=GREGORIAN;

Session altered.

SQL> show parameter nls_date

NAME                     TYPE            VALUE

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

nls_date_format              string            DD-MON-RR

nls_date_language             string            american

SQL> alter session set nls_date_language=‘simplified chinese‘;

Session altered.

SQL> show parameter nls_date

NAME                     TYPE            VALUE

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

nls_date_format              string            DD-MON-RR

nls_date_language             string            simplified chinese

SQL> select to_char(sysdate,‘yyyy-mon-dd‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MON-DD‘)

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

2015-12月-04

SQL> select to_char(sysdate,‘yyyy-mon-dd‘,‘nls_calendar=‘‘ROC Official‘‘‘) from dual;   --由于参数值中有空格,所以参数值要用单引号括起来,由于其外层又有单引号,要用两个单引号来表示一个单引号。

TO_CHAR(SYSDATE,‘YYYY-MO

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

0104-12-04

SQL> select to_char(sysdate,‘yyyy-mon-dd day‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MON-DDDAY‘)

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

2015-12月-04 星期五

SQL> select to_char(sysdate,‘yyyy-mon-dd day‘,‘nls_calendar=‘‘ROC Official‘‘‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MON-DDDAY‘,‘NLS_CALENDAR=‘‘R

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

0104-12-04 星期五

可以在格式中指定其它字符,用双引号(")把相应的字符括起来。输出时,原样输出。

SQL> select to_char(sysdate,‘"民国"yyyy-mon-dd day‘,‘nls_calendar=‘‘ROC Official‘‘‘) from dual;

TO_CHAR(SYSDATE,‘"民国"YYYY-MON-DDDAY‘,‘NLS_CALENDAR=‘‘ROCOFFI

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

民国0104-12-04 星期五

可以在函数中指定多个NLS参数,两个参数间用空格隔开。

SQL> select to_char(sysdate,‘"民国"yyyy-mon-dd day‘,‘nls_calendar=‘‘ROC Official‘‘ nls_date_language=american‘) from dual;

TO_CHAR(SYSDATE,‘"民国"YYYY-MON-DDDAY‘,‘NLS_CALENDAR=‘‘ROCOFFICIAL‘‘NLS_DATE_LANGUAGE=AMERICAN‘)

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

民国0104-12-04 friday

d:用数字表示星期(1-7)。参数NLS_TERRITORY默认配置时认为一周是从周日开始的,所以,周日是1,周六是7.

SQL> select to_char(sysdate,‘yyyy-mm-dd day d‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DDDAYD‘)

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

2015-12-04 星期五 6

若希望实现周一是1,周日是7的效果,可使用如下方法来实现

重点:nls_date_language=‘‘numeric date language‘‘ 是oracle的非文档参数, numeric date language标示将format中得day 转化成对应数字 周一 --1, 周二--2。。。 周日--7

注意: 与 d 的区别 

d:用数字表示星期(1-7)。参数NLS_TERRITORY默认配置时认为一周是从周日开始的,所以,周日是1,周六是7

day of numeric date language标示将format中得day 转化成对应数字 周一 --1, 周二--2。。。 周日--7

SQL> select to_char(sysdate,‘yyyy-mm-dd day‘,‘nls_date_language=‘‘numeric date language‘‘‘) from dual;

TO_CHAR(SYSDATE,‘YYYY-MM-DDDAY‘,‘

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

2015-12-04 5 

 

你可能感兴趣的:(数据库,Oracle,NLS,to_char)