1. 程式人生 > >oracle 12c to_char 函式(1) 日期-字串

oracle 12c to_char 函式(1) 日期-字串

oracle 12c to_char 函式 日期-字串

TO_CHAR 函式,資料轉換為文字形式,如下圖
to_char型別裝換

TO_CHAR() 日期型到字元型

作用
to_char 中的引數為日期,可以將日期轉為特定格式的字串型別
寫法

    TO_CHAR(日期[,'日期形式'][,NLS引數])
    /* @param  日期  需要變化的日期數
    *  @param '日期形式' 變化為那種形式(可省略)
    *  @param NLS引數關於date的系統環境指定(可省略)
    *  @return 字串

日期形式表

此處以sysdate 為列進行測試

select
sysdate from dual;
SYSDATE ----------- 2018/06/04
元素 說明 日語環境 英語環境 測試語句
SCC / CC 世紀。如果四位數年份的最後兩位數字是01到99(包括01和99),則該世紀是該年份的前兩位數字加1。如果四位數年份的最後兩位數字是00,則該世紀等於該年份的前兩位數字。例如,2002年返回21,2000年返回20。 21 21 select TO_CHAR(sysdate,’SCC’) from dual;
SYYYY / SYYY 四位數年份。在S的情況下,在BC的日期開始時加上一個減號。 2018 2018 select TO_CHAR(sysdate,’SYYYY’) from dual;
YYY / YY /Y 年份三位數表示,兩位數,一位數表示 18 18 select TO_CHAR(sysdate,’YY’) from dual;
SYEAR / YEAR 年拼寫出來。在S的情況下,在BC的日期的開始附加一個減號( - )。 TWENTY EIGHTEEN TWENTY EIGHTEEN select TO_CHAR(sysdate,’SYEAR’) from dual;
RR 年後面兩位數。 18 18 select TO_CHAR(sysdate,’RR’) from dual;
Q 一年的四季 2 2 select TO_CHAR(sysdate,’Q’) from dual;
MM 月兩位數表示 06 06 select TO_CHAR(sysdate,’MM’) from dual;
MONTH 長的月份表示(9個字以內) 6月 JUNE select TO_CHAR(sysdate,’MONTH’) from dual;
MON 簡略的月份表示(3個字以內) 6月 JUN select TO_CHAR(sysdate,’MON’) from dual;
RM 使用羅馬數字表示月份 VI VI select TO_CHAR(sysdate,’RM’) from dual;
WW / W WW 表示年過去的周 W 表示月過去的周 23 23 select TO_CHAR(sysdate,’WW’) from dual;
DDD / DD / D 年/月/周 過去的天數 155 155 select TO_CHAR(sysdate,’DDD’) from dual;
DAY 星期表示(9字以內) 月曜日 MONDAY select TO_CHAR(sysdate,’DAY’) from dual;
DY 星期省略表示(3字以內) MON select TO_CHAR(sysdate,’DY’) from dual;
IW ISO基準下的,一年過了幾周 23 23 select TO_CHAR(sysdate,’IW’) from dual;
AM / PM 時間為午前還是午後 午後 PM select TO_CHAR(sysdate,’AM’) from dual;
A.M./ P.M. 用A.M.或者P.M.形式表示(日語環境不變) 午後 PM select TO_CHAR(sysdate,’AM’) from dual;
HH/HH24/HH12 時間表示 04 04 select TO_CHAR(sysdate,’HH’) from dual;
時間表示24小時制 16 16 select TO_CHAR(sysdate,’HH24’) from dual;
時間表示12小時制 04 04 select TO_CHAR(sysdate,’HH12’) from dual;
MI 分(0-59) 26 26 select TO_CHAR(sysdate,’MI’) from dual;
SS 秒(0-59) 02 02 select TO_CHAR(sysdate,’SS’) from dual;
SSSSS 早上0時過去的秒數(0-86399) 59318 59318 select TO_CHAR(sysdate,’SSSSS’) from dual;

特別注意的點
+ 【/】【-】【(】可以作為連線的符號
+ 當有* 年** 日* 漢字時,需要用雙引號

    select TO_CHAR(sysdate,'YYYY"年"MM"年"DD"日"') from dual;
    TO_CHAR(SYSDATE,'YYYY"年"MM"年"DD"日"')
    ------------------------------------
    2018年06年04日 
  • 日期表示形式必須是半形符號,不然會產生錯誤。

日期時間格式元素的字尾

元素 說明 日語環境 英語環境 測試語句
TH 數字的序數形式 04TH of 6月 04TH of june select TO_CHAR(sysdate,’DDTH “of” month’) from dual;
SP 數字以完整拼法表示 FOUR of 6月 FOUR of june select TO_CHAR(sysdate,’DDSP “of” month’) from dual;
SPTH/THSP 序數以完整拼寫表示 FOURTH of 6月 FOURTH of june select TO_CHAR(sysdate,’DDSPTH “of” month’) from dual;

特別注意的點

  • 結尾詞前面有大小寫區別,如果書寫為小寫形式,顯示資料也為小寫
/* 1.都為小寫*/
select TO_CHAR(sysdate,'ddTHSP "of" month') from dual;
TO_CHAR(SYSDATE,'DDTHSP"OF"MONTH')
----------------------------------
fourth of 6月
/* 2. 開頭大寫*/
select TO_CHAR(sysdate,'Ddthsp "of" month') from dual;
TO_CHAR(SYSDATE,'DDTHSP"OF"MONTH')
----------------------------------
Fourth of 6月
/* 3. 大寫*/ 
select TO_CHAR(sysdate,'DDTHSP "of" month') from dual;
TO_CHAR(SYSDATE,'DDTHSP"OF"MONTH')
----------------------------------
FOURTH of 6月

格式模型修飾符

FM 可以去除數值前面的0,以及字串後面的無效的空白鍵。

select ename,to_char(hiredate,'ddTHSP "of" month,YYYY','NLS_DATE_LANGUAGE=AMERICAN'),hiredate
from employees;
ENAME      TO_CHAR(HIREDATE,'DDTHSP"OF"MONTH,YYYY','NLS_DATE_LANGUAGE=AMERICAN') HIREDATE
---------- --------------------------------------------------------------------- -----------
加藤       twenty-eighth of february ,2014                                       2014/02/28
吉田       thirteenth of march    ,2009                                          2009/03/13
鈴木       twenty-sixth of march    ,2000                                        2000/03/26
斉藤       seventeenth of december ,2001                                         2001/12/17

/*加上fm*/
select ename,to_char(hiredate,'fmddTHSP "of" month,YYYY','NLS_DATE_LANGUAGE=AMERICAN'),hiredate
 from employees;

ENAME      TO_CHAR(HIREDATE,'FMDDTHSP"OF"MONTH,YYYY','NLS_DATE_LANGUAGE=AMERICAN') HIREDATE
---------- ----------------------------------------------------------------------- -----------
加藤       twenty-eighth of february,2014                                          2014/02/28
吉田       thirteenth of march,2009                                                2009/03/13
鈴木       twenty-sixth of march,2000                                              2000/03/26
斉藤       seventeenth of december,2001                                            2001/12/17