W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
日期時(shí)間格式化指定了存儲(chǔ)在數(shù)據(jù)庫(kù)中日期時(shí)間數(shù)據(jù)的格式。日期時(shí)間格式化的總長(zhǎng)度不能超過 22 個(gè)字符。
日期時(shí)間格式化出現(xiàn)在下面的數(shù)據(jù)類型轉(zhuǎn)換中:
TO_DATE
?、?TO_TIMESTAMP
? 和 ?TO_TIMESTAMP_TZ
? 函數(shù)的參數(shù)指定日期時(shí)間的格式。TO_CHAR
? 函數(shù)的參數(shù)。您可以通過以下方式指定日期時(shí)間格式。
NLS_DATE_FORMAT
?、?NLS_TIMESTAMP_FORMAT
? 或 ?NLS_TIMESTAMP_TZ_FORMAT
? 顯式指定。NLS_TERRITORY
? 隱式指定。ALTER SESSION
? 語句更改會(huì)話的默認(rèn)日期時(shí)間格式。日期時(shí)間格式化由一個(gè)或多個(gè)日期時(shí)間格式化元素組成。OceanBase 數(shù)據(jù)庫(kù)支持的格式化元素請(qǐng)查閱 日期時(shí)間格式化元素表。
SYYYY
?和 ?BC
? 元素。TO_CHAR
?、?TO_DATE
?、?TO_TIMESTAMP
? 和 ?TO_TIMESTAMP_TZ
? 函數(shù)中使用。FF
?、?TZD
?、?TZH
?、?TZM
? 和 ?TZR
?可以出現(xiàn)在時(shí)間戳和間隔格式化中,但不能出現(xiàn)在 ?DATE
? 格式中。注意
建議您使用 4 位數(shù)的年份元素(?YYYY
?),較短的年份元素會(huì)影響查詢優(yōu)化,因?yàn)槟攴葜荒茉谶\(yùn)行時(shí)確定。
元素 |
日期時(shí)間函數(shù)是否支持? |
說明 |
---|---|---|
- / , 。 ; : “文字” |
是 |
標(biāo)點(diǎn)和引用的文本會(huì)在結(jié)果中復(fù)制。 |
AD A.D. |
是 |
表示公元紀(jì)年法,帶有或不帶有點(diǎn)號(hào)。 |
AM A.M. |
是 |
表示上午,帶有或不帶有點(diǎn)號(hào)。 |
BC B.C. |
是 |
表示公元前的年份,帶有或不帶有點(diǎn)號(hào)。 |
D |
是 |
星期幾(1-7)。 |
DAY |
是 |
一天的名稱。 |
DD |
是 |
每月的一天(1-31)。 |
DDD |
是 |
一年中的某天(1-366)。 |
DL |
是 |
只能打印類似 "Monday, January, 01, 1996" 的固定格式。 |
DS |
是 |
只能打印類似 "10-10-1996" 的固定格式。 |
DY |
是 |
日期的縮寫,返回星期值。 |
FF [1..9] |
是 |
小數(shù)秒。使用數(shù)字 1~9 來指定返回值的小數(shù)秒部分的位數(shù)。默認(rèn)為日期時(shí)間數(shù)據(jù)類型指定的精度。在時(shí)間戳和間隔格式中有效,但在 |
FX |
是 |
需要字符數(shù)據(jù)和格式模型之間的精確匹配。 |
HHHH12 |
是 |
小時(shí)(1-12)。12 小時(shí)制 |
HH24 |
是 |
小時(shí)(0-23)。24 小時(shí)制 |
YYYY |
是 |
包含4位數(shù)字的年份。 |
MI |
是 |
分鐘(0-59)。 |
MM |
是 |
月(01-12;一月份表示為 01 )。 |
MON |
是 |
月份的縮寫。 |
MONTH |
是 |
月份名稱。 |
PM P.M. |
是 |
表示下午,帶有或不帶有點(diǎn)號(hào)。 |
Q |
是 |
季度(1、2、3、4; 1月-3月是第 1 季度)。 |
RR |
是 |
RR 匹配兩位數(shù)的年份。 |
RRRR |
是 |
年。接受4位或2位輸入。 |
SS |
是 |
秒(0-59)。 |
SSSSS |
是 |
午夜后的秒(0-86400)。 |
TZD |
是 |
夏令時(shí)信息。TZD 值是帶有夏令時(shí)信息的縮寫時(shí)區(qū)字符串。在時(shí)間戳和間隔格式中有效,但在 |
TZH |
是 |
時(shí)區(qū)小時(shí)。在時(shí)間戳和間隔格式中有效,但在 |
TZM |
是 |
時(shí)區(qū)分鐘。在時(shí)間戳和間隔格式中有效,但在 |
TZR |
是 |
時(shí)區(qū)區(qū)域信息。在時(shí)間戳和間隔格式中有效,但在 |
X |
是 |
小數(shù)點(diǎn),永遠(yuǎn)是 '.' 。 |
Y,YYY |
是 |
帶逗號(hào)的年。 |
YYYYSYYYY |
是 |
4位數(shù)字的年份。 S 代表用一個(gè)負(fù)號(hào)表示公元前的日期。 |
YYYYYY |
是 |
年份的后 3、2 或 1 位數(shù)字。 |
說明
日期時(shí)間函數(shù)指的是?TO_CHAR
?、?TO_DATE
?、?TO_TIMESTAMP
? 和 ?TO_TIMESTAMP_TZ
? 。
注意,以上轉(zhuǎn)化要求輸入的字符串日期能夠與格式元素相匹配,否則會(huì)報(bào)錯(cuò),例如:
obclient> SELECT TO_DATE( '31 Aug 2020', 'DD MON YYYY' ) FROM DUAL;
+----------------------------------+
| TO_DATE('31AUG2020','DDMONYYYY') |
+----------------------------------+
| 2020-08-31 00:00:00 |
+----------------------------------+
1 row in set (0.00 sec)
注意
OceanBase 數(shù)據(jù)庫(kù)中默認(rèn)的日期格式為 DD-MON-RR,如果要顯示為上面的格式,可以通過執(zhí)行 alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'; 修改當(dāng)前會(huì)話的日期時(shí)間格式。
當(dāng)您的格式串漏掉了一些元素時(shí),會(huì)得到系統(tǒng)的報(bào)錯(cuò)信息:
obclient> SELECT TO_DATE( '31 Aug 2020', 'DD MON YYY' ) FROM DUAL;
ORA-01830: date format picture ends before converting entire input string
拼寫出來的單詞、縮寫詞或羅馬數(shù)字中的大寫字母在相應(yīng)的格式元素中也跟著大寫。例如,日期格式元素 ?DAY
? 產(chǎn)生的 ?MONDAY
? 也大寫,?Day
? 和 ?Monday
? 格式一樣,?day
? 和 ?monday
? 格式一樣。
obclient> SELECT TO_CHAR(sysdate,'mon') AS nowMonth FROM DUAL;
+----------+
| NOWMONTH |
+----------+
| mar |
+----------+
1 row in set (0.00 sec)
obclient> SELECT TO_CHAR(sysdate,'MON') AS nowMonth FROM DUAL;
+----------+
| NOWMONTH |
+----------+
| MAR |
+----------+
1 row in set (0.00 sec)
以下字符需要日期格式化,這些字符出現(xiàn)在返回值中的位置與格式化中字符的位置相同:
OceanBase 數(shù)據(jù)庫(kù)可以靈活的將字符串轉(zhuǎn)換為日期。當(dāng)您使用 ?TO_DATE
? 函數(shù)時(shí),若輸入字符串中的每個(gè)數(shù)字元素都包含格式化允許的最大位數(shù),則格式字符串將與輸入的字符串匹配。
執(zhí)行以下語句:
SELECT TO_CHAR(TO_DATE('0207','MM/YY'),'MM/YY') FROM DUAL;
查詢結(jié)果如下:
+------------------------------------------+
| TO_CHAR(TO_DATE('0207','MM/YY'),'MM/YY') |
+------------------------------------------+
| 02/07 |
+------------------------------------------+
執(zhí)行以下語句:
SELECT TO_CHAR (TO_DATE('02#07','MM/YY'), 'MM/YY') FROM DUAL;
查詢結(jié)果如下:
+-------------------------------------------+
| TO_CHAR(TO_DATE('02#07','MM/YY'),'MM/YY') |
+-------------------------------------------+
| 02/07 |
+-------------------------------------------+
在 OceanBase 數(shù)據(jù)庫(kù)中,日期時(shí)間格式化元素的語言可以通過參數(shù) ?NLS_DATE_LANGUAGE
? 和 ?NLS_LANGUAGE
? 指定。默認(rèn)值是 ?AMERICAN
?,不支持修改,所以不支持全球化。
示例:日期時(shí)間格式化的語言參數(shù)默認(rèn)是 ?American
?,不支持其他語言。
SELECT TO_CHAR (SYSDATE, 'DD/MON/YYYY', 'nls_date_language=''Traditional Chinese'' ') FROM DUAL;
查詢結(jié)果報(bào)錯(cuò),語言參數(shù)不支持。
ORA-12702: invalid NLS parameter string used in SQL function
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: