新聞中心
日期時(shí)間格式化指定了存儲(chǔ)在數(shù)據(jù)庫(kù)中日期時(shí)間數(shù)據(jù)的格式。日期時(shí)間格式化的總長(zhǎng)度不能超過(guò) 22 個(gè)字符。

歷下網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),歷下網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為歷下1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的歷下做網(wǎng)站的公司定做!
函數(shù)中的日期時(shí)間格式化
日期時(shí)間格式化出現(xiàn)在下面的數(shù)據(jù)類型轉(zhuǎn)換中:
- 將非默認(rèn)格式的字符值轉(zhuǎn)換為日期時(shí)間值時(shí),需要 ?
TO_DATE?、?TO_TIMESTAMP? 和 ?TO_TIMESTAMP_TZ? 函數(shù)的參數(shù)指定日期時(shí)間的格式。 - 將日期時(shí)間值轉(zhuǎn)換為非默認(rèn)格式的字符值時(shí),需要指定 ?
TO_CHAR? 函數(shù)的參數(shù)。
您可以通過(guò)以下方式指定日期時(shí)間格式。
- 通過(guò)會(huì)話參數(shù) ?
NLS_DATE_FORMAT?、?NLS_TIMESTAMP_FORMAT? 或 ?NLS_TIMESTAMP_TZ_FORMAT? 顯式指定。 - 通過(guò)會(huì)話參數(shù) ?
NLS_TERRITORY? 隱式指定。 - ?
ALTER SESSION? 語(yǔ)句更改會(huì)話的默認(rèn)日期時(shí)間格式。
日期時(shí)間格式化
日期時(shí)間格式化由一個(gè)或多個(gè)日期時(shí)間格式化元素組成。OceanBase 數(shù)據(jù)庫(kù)支持的格式化元素請(qǐng)查閱 日期時(shí)間格式化元素表。
- 在格式化字符串中,相同的格式化元素不能出現(xiàn)兩次,表示類似信息的格式化元素不能組合。例如,您不能在一個(gè)格式化字符串中同時(shí)使用 ?
SYYYY?和 ?BC? 元素。 - 所有格式化元素都可以在 ?
TO_CHAR?、?TO_DATE?、?TO_TIMESTAMP? 和 ?TO_TIMESTAMP_TZ? 函數(shù)中使用。 - 日期時(shí)間格式化元素 ?
FF?、?TZD?、?TZH?、?TZM? 和 ?TZR?可以出現(xiàn)在時(shí)間戳和間隔格式化中,但不能出現(xiàn)在 ?DATE? 格式中。 - 許多日期時(shí)間格式元素被空白填充或用零填充至指定的長(zhǎng)度。
注意
建議您使用 4 位數(shù)的年份元素(?
YYYY?),較短的年份元素會(huì)影響查詢優(yōu)化,因?yàn)槟攴葜荒茉谶\(yùn)行時(shí)確定。
日期時(shí)間格式化元素表
|
元素 |
日期時(shí)間函數(shù)是否支持? |
說(shuō)明 |
|---|---|---|
|
- / , 。 ; : “文字” |
是 |
標(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 |
是 |
日期的縮寫(xiě),返回星期值。 |
|
FF [1..9] |
是 |
小數(shù)秒。使用數(shù)字 1~9 來(lái)指定返回值的小數(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 |
是 |
月份的縮寫(xiě)。 |
|
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í)信息的縮寫(xiě)時(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ù)字。 |
說(shuō)明
日期時(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,如果要顯示為上面的格式,可以通過(guò)執(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
日期格式化元素中的大寫(xiě)字母
拼寫(xiě)出來(lái)的單詞、縮寫(xiě)詞或羅馬數(shù)字中的大寫(xiě)字母在相應(yīng)的格式元素中也跟著大寫(xiě)。例如,日期格式元素 ?DAY? 產(chǎn)生的 ?MONDAY? 也大寫(xiě),?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)
日期時(shí)間格式化中的標(biāo)點(diǎn)符號(hào)和字符字面量
以下字符需要日期格式化,這些字符出現(xiàn)在返回值中的位置與格式化中字符的位置相同:
- 標(biāo)點(diǎn)符號(hào),例如連字符,斜杠,逗號(hào),句號(hào)和冒號(hào)。
- 字符字面量,用雙引號(hào)引起來(lái)。
OceanBase 數(shù)據(jù)庫(kù)可以靈活的將字符串轉(zhuǎn)換為日期。當(dāng)您使用 ?TO_DATE? 函數(shù)時(shí),若輸入字符串中的每個(gè)數(shù)字元素都包含格式化允許的最大位數(shù),則格式字符串將與輸入的字符串匹配。
- 示例 1:格式元素 MM/YY,其中 02 對(duì)應(yīng) MM,07 對(duì)應(yīng) YY。
執(zhí)行以下語(yǔ)句:
SELECT TO_CHAR(TO_DATE('0207','MM/YY'),'MM/YY') FROM DUAL;
查詢結(jié)果如下:
+------------------------------------------+
| TO_CHAR(TO_DATE('0207','MM/YY'),'MM/YY') |
+------------------------------------------+
| 02/07 |
+------------------------------------------+
- 示例 2:OceanBase 數(shù)據(jù)庫(kù)允許非字母數(shù)字字符與格式化中的標(biāo)點(diǎn)字符匹配,# 對(duì)應(yīng) /。
執(zhí)行以下語(yǔ)句:
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í)間格式化元素的語(yǔ)言可以通過(guò)參數(shù) ?NLS_DATE_LANGUAGE? 和 ?NLS_LANGUAGE? 指定。默認(rèn)值是 ?AMERICAN?,不支持修改,所以不支持全球化。
示例:日期時(shí)間格式化的語(yǔ)言參數(shù)默認(rèn)是 ?American?,不支持其他語(yǔ)言。
SELECT TO_CHAR (SYSDATE, 'DD/MON/YYYY', 'nls_date_language=''Traditional Chinese'' ') FROM DUAL;
查詢結(jié)果報(bào)錯(cuò),語(yǔ)言參數(shù)不支持。
ORA-12702: invalid NLS parameter string used in SQL function
更多信息
- 字符串到日期的轉(zhuǎn)換規(guī)則
網(wǎng)頁(yè)名稱:創(chuàng)新互聯(lián)OceanBase教程:OceanBase日期時(shí)間格式化
文章源于:http://www.dlmjj.cn/article/cdesdhs.html


咨詢
建站咨詢
