日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle格式化数字和日期的方法

發布時間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle格式化数字和日期的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/szwangdf/article/details/1570005

to_char,函數功能,就是將數值型或者日期型轉化為字符型。

比如最簡單的應用:

/*1.0123--->'1.0123'*/
Select?TO_CHAR(1.0123)?FROM?DUAL
/*123--->'123'*/
Select?TO_CHAR(123)?FROM?DUAL

?接下來再看看下面:

/*0.123?--->?'.123'?*/
SELEC?TO_CHAR(0.123)?FROM?DUAL

?上面的結果 '.123' 在大多數情況下都不是我們想要的結果,我們想要的應該是 '0.123'。

我們來看一下to_char函數的具體用法:

TO_CHAR ( n [, fmt [, 'nlsparam']] ) 該函數將NUMBER類型的n按數值格式fmt轉換成VARCHAR2類型的值。'nlsparams'指定由數值格式的元素返回的字符,包括:

.小數點字符

.組分隔符

.本地錢幣符號

.國際錢幣符號

變元的形式為:

'NLS_NUMERIC_CHARACTERS="dg"?NLS_CURRENCY="tcxt"?NLS_ISO_CURRENCY=territory'

其中d為小數點字符,g為組分隔符。

例?:TO_CHAR?(17145,'L099G999','NLS_NUMERIC_CHARACTERS=".,"?NLS_CURRENCY="NUD"')=NUD017,145

通過上面的了解,再查看fmt的一些格式,我們可以用以下表達式得到'0.123'的值:

/*0.123?--->?'?0.123'?*/?
Select?TO_CHAR(0.123,'0.999')?FROM?DUAL
/*100.12?--->?'######'?*/?
Select?TO_CHAR(100.12,'0.999')?FROM?DUAL
/*1.12?--->?'?1.120'?*/?
Select?TO_CHAR(1.12,'0.999')?FROM?DUAL

?' 0.123'是出來了,可是前面又多了一個空格。

對于 100.12 的值卻是######,以及'1.12'的值變成了 '1.120'。

我們重新確定一個新的需求:

1、去空格

2、小數點最多4位,最少保留2位。

??? 1--->'1.00';1.1--->'1.00';1.12-->'1.12';1.1234--->'1.1234';

??? 1.12345--->'1.1235'

最終實現如下:

/*
??FM?:除空格??
??9999999.0099:允許小數點左邊最大正數為7位,小數點右邊最少2位,最多4位,且在第5位進行四舍五入
*/
?
Select?TO_CHAR(123.0233,'FM9999999.0099')?FROM?DUAL

?

===========

http://www.5ienet.com/note/html/numdate/oracle-number-format.shtml

二、 數值

格式串 說明及示例

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

, 在指定位置附加逗號(便于閱讀),注意逗號不能出現于格式字串首位,并且對于小數點的數字無效
  • 例如:

    SQL> select to_char(389999.00,¨99,999,999¨) from dual;

    TO_CHAR(389

    -----------

    389,999
. 按指定格式顯示小數點及小數點后位置(指定數字沒有小數的話,以0補足)
  • 例如:

    SQL> select to_char(18,¨999.000¨) from dual;

    TO_CHAR(

    --------

    18.000
$ 字符前附加$符
  • 例如:

    SQL> select to_char(18,¨$999¨) from dual;

    TO_CH

    -----

    $18

    SQL> select to_char(18,¨999$¨) from dual;

    TO_CH

    -----

    $18
0 字符頭部或尾部附加0
  • 例如:

    SQL> select to_char(18.0,¨0999¨) from dual;

    TO_CH

    -----

    0018
9 與上類似以指定長度返回數值格式,不過如果被格式化的數值長度短于指定格式,則以空格補足。
  • 例如:

    SQL> select to_char(18.0,¨9999¨) from dual;

    TO_CH

    -----

    18
B 當整數部分是0時返回空格(即使存在0格式串也忽略)。
  • 例如:

    SQL> select to_char(0.18,¨B0999¨) from dual;

    TO_CH

    -----
C 返回ISO默認指定的標識(默認標識可參見:NLS_ISO_CURRENCY)
  • 例如:

    SQL> select to_char(128.18,¨C999999.99¨) from dual;

    TO_CHAR(128.18,¨C

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

    CNY128.18
D 返回指定的小數點形式(默認符:.)(默認標識可參見:NLS_NUMERIC_CHARACTER)
  • 例如:

    SQL> select to_char(128.18,¨9999D99¨) from dual;

    TO_CHAR(

    --------

    128.18

    SQL> alter session set nls_numeric_characters=¨:"¨;

    會話已更改。

    SQL> select to_char(128.18,¨9999D99¨) from dual;

    TO_CHAR(

    --------

    128:18
EEEE 使用科學記數法顯示
  • 例如:

    SQL> select to_char(128.18,¨9EEEE¨) from dual;

    TO_CHAR

    -------

    1E+02
G 與逗號功能類似,用指定字符分隔字串(默認符:,)(默認標識可參見:NLS_NUMERIC_CHARACTER)。
  • 例如:

    SQL> select to_char(11128.18,¨99G999¨) from dual;

    TO_CHAR

    -------

    11,128

    SQL> alter session set nls_numeric_characters=¨:"¨;

    會話已更改。

    SQL> select to_char(11128.18,¨99G999¨) from dual;

    TO_CHAR

    -------

    11"128
L 指定位置顯示本地默認符號(默認值見:NLS_CURRENCY)
  • 例如:

    SQL> select to_char(999,¨L999¨) from dual;

    TO_CHAR(999,¨L

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

    ¥999

    SQL> alter session set nls_currency=¨haha¨;

    會話已更改。

    SQL> select to_char(999,¨L999¨) from dual;

    TO_CHAR(999,¨L

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

    haha999
MI 負值在尾部顯示-號,正值在尾部附加空格。另:該格式符必須處于格式串尾部
  • 例如:

    SQL> select to_char(-18,¨999MI¨) from dual;

    TO_C

    ----

    18-

    SQL> select to_char(18,¨999MI¨) from dual;

    TO_C

    ----

    18
PR 負值以<>尖括號包括,正值在頭尾部各附加空格。另:該格式符必須處于格式串尾部
  • 例如:

    SQL> select to_char(-18,¨999PR¨) from dual;

    TO_CH

    -----

    <18>

    SQL> select to_char(18,¨999PR¨) from dual;

    TO_CH

    -----

    18
RN/rn 返回羅馬數字形式。注:大寫格式串返回大寫羅馬數字,小寫格式串返回小寫羅馬數字:)
  • 例如:

    SQL> select to_char(18,¨RN¨) from dual;

    TO_CHAR(18,¨RN¨

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

    XVIII

    SQL> select to_char(18,¨rn¨) from dual;

    TO_CHAR(18,¨RN¨

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

    xviii
S 顯示數值正負值符號。可出現于格式串首部或尾部。
  • 例如:

    SQL> select to_char(18,¨S9999¨) from dual;

    TO_CH

    -----

    +18

    SQL> select to_char(18,¨9999S¨) from dual;

    TO_CH

    -----

    18+
TM 字符格式轉換(標準數值與科學計數法),可以通過附加9或e控制輸出,默認是tm9,如果輸出超過64個字符,則數據庫自動轉換成科學計數法顯示。該格式串不能與其它的數值型格式串同時使用。
  • 例如:

    SQL> select TO_CHAR(128,¨tme¨) from dual;

    TO_CHAR(128,¨TME¨)

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

    1.28E+02

    SQL> select TO_CHAR(1.28E+02,¨tm¨) from dual;

    TO_CHAR(1.28E+02,¨TM¨)

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

    128
U 與L類似,在指定位置顯示貨幣單位(默認值見:NLS_DUAL_CURRENCY)
  • 例如:

    SQL> select TO_CHAR(128,¨999U¨) from dual;

    TO_CHAR(128,¨9

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

    128 ¥

    SQL> alter session set nls_dual_currency=¨aaa¨;

    會話已更改。

    SQL> select TO_CHAR(128,¨999U¨) from dual;

    TO_CHAR(128,¨9

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

    128aaa
V 數值+10的n次方,n=V后9的個數
  • 例如:

    SQL> select TO_CHAR(128,¨999V999¨) from dual;

    TO_CHAR

    -------

    128000
X 返回指定數值對應的16進制數,必須是正數。如果指定數值非整的話,oracle會自動round取整。

例如:

SQL> select TO_CHAR(16,¨XXXX¨) from dual;

TO_CH

-----

  • 10

===http://www.5ienet.com/note/html/numdate/oracle-date-time-format(2).shtml
(2)日期及時間格式續
[君三思] 2007-12-14
SSSSS 返回自午夜到指定時間共逝去的秒數(范圍:0-86399)
  • 例如:

    SQL> select to_char(sysdate,¨sssss¨) from dual;

    TO_CHAR(SYSDATE,¨SSSSS¨)

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

    55141
DL 根據數據庫nls_date_format參數中的設置及nls_language,nls_territory參數中的格式返回長日期形式,有點兒繞,呵呵你試試就知道了
  • 例如:

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

    TO_CHAR(SYSDATE,¨DL¨)

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

    2007 年12月14日 星期五
DS 與上相同返回短日期形式
  • 例如:

    SQL> select to_char(sysdate,¨Ds¨) from dual;

    TO_CHAR(SYSDATE,¨DS¨)

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

    2007-12-14
TS 與DL,DS參數類似,不過ts返回的是時間
  • 例如:

    SQL> select to_char(sysdate,¨ts¨) from dual;

    TO_CHAR(SYSDATE,¨TS¨)

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

    下午 3:21:20
DY 返回日期簡寫
  • 例如:

    SQL> alter session set nls_language=¨SIMPLIFIED CHINESE¨;

    會話已更改。

    SQL> select to_char(sysdate,¨dy¨) from dual;

    TO_CHAR(SYSD

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

    星期五

    嗯?怎么沒變?黑黑中文沒法簡了嘛,這樣試試~~

    SQL> alter session set nls_language=¨AMERICAN¨;

    Session altered.

    SQL> select to_char(sysdate,¨dy¨) from dual;

    TO_CHA

    ------

    fri
RR RR 參數與YY參數很類似,但取值規則略有不同:
  • 如果輸入的兩位數是00-49:

    如果當前年份屬于00-49,則返回成本世紀所在年份;

    如果當前年份屬于50-99,則返回成下世紀所在年份。

    如果輸入的兩位數是50-99:

    如果當前年份屬于00-49,則返回成上世紀所在年份

    如果當前年份屬于50-99,則返回成本世界所在年份

    注:這種自動轉換只適用于 String -> Date 的轉換,如果是 Date -> String,那就按照 Date 存儲的值來轉換,此時再用 RR/RRRR 已經沒有意義了,因為 Oracle 內部存儲的年份是四位數的。
  • 例如:

    SQL> select sysdate from dual;

    SYSDATE

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

    2007-12-18 15:11:39

    SQL> select to_date(¨12¨,¨rr¨) from dual;

    TO_DATE(¨12¨,¨RR¨)

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

    2012-12-01 00:00:00

    SQL> select to_date(¨51¨,¨rr¨) from dual;

    TO_DATE(¨51¨,¨RR¨)

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

    1951-12-01 00:00:00

RRRR 輸入值可以是2位也可以是4位,2位時規則與RR完全相同。

  • 例如:

    SQL> select to_date(¨97-11-3¨,¨rrrr-mm-dd¨) from dual;

    TO_DATE(¨97-11-3¨,¨RRRR-MM-DD¨

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

    1997-11-3

    SQL> select to_date(¨17-11-3¨,¨rrrr-mm-dd¨) from dual;

    TO_DATE(¨17-11-3¨,¨RRRR-MM-DD¨

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

    2017-11-3
  • 提示:FM及FX用于to_*函數中控制空白填充或精確檢查,其提供的是一個格式化方案,并且具備相當的持久能力,比如當你第一次調用之后即開始生效,后續再調用時即使不指定FM/FX,也仍然會生效。當你再次調用時失效,第三次調用時又開始生效,以此類推(有點兒繞,不明白的看下面的示例,示例還看不明白的直接問我,問我也問不明白地話..........黑,估計你也用不著,算鳥)。。。。。

FM 填充模式。

  Oracle 默認使用空白字符填充被格式化的元素,確保寬度一致。例如:

  • 例如:

    SQL> select to_char(to_date(¨2007-3-1¨,¨yyyy-mm-dd¨),¨month¨) mm,length(to_char(to_date(¨2007-3-1¨,¨yyyy-mm-dd¨),¨month¨)) ll from dual;

    MM LL

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

    march 9

    SQL> select to_char(to_date(¨2007-12-1¨,¨yyyy-mm-dd¨),¨month¨) mm,length(to_char(to_date(¨2007-12-1¨,¨yyyy-mm-dd¨),¨month¨)) ll from dual;

    MM LL

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

    december 9

  如上例可以看到,不管幾月份,其返回所占長度是一致的。

  • 如果是字符格式化,指定fm參數后將僅返回指定屬性實際所占長度(不再以空格填充)。
  • 例如:

    SQL> select to_char(to_date(¨2007-3-1¨,¨yyyy-mm-dd¨),¨fmmonth¨) mm,length(to_char(to_date(¨2007-3-1¨,¨yyyy-mm-dd¨),¨fmmonth¨)) ll from dual;

    MM LL

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

    march 5

    SQL> select to_char(to_date(¨2007-12-1¨,¨yyyy-mm-dd¨),¨fmmonth¨) mm,length(to_char(to_date(¨2007-12-1¨,¨yyyy-mm-dd¨),¨fmmonth¨)) ll from dual;

    MM LL

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

    december 8

    與上對比,看出區別來了吧。
  • 如果是數值格式化,fm參數會自動舍棄被格式化元素的前置0。
  • 例如:

    SQL> alter session set nls_date_format=¨fmyyyy-mm-dd hh24:mi:ss¨;

    Session altered.

    SQL> select to_date(¨2007-8-1 03:03:04¨,¨yyyy-mm-dd hh24:mi:ss¨) from dual;

    TO_DATE(¨2007-8-103

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

    2007-8-1 3:3:4

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

    Session altered.

    SQL> select to_date(¨2007-8-1 03:03:04¨,¨yyyy-mm-dd hh24:mi:ss¨) from dual;

    TO_DATE(¨2007-8-103

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

    2007-08-01 03:03:04

    SQL> alter session set nls_date_format=¨fmyyyy-mm-fmdd hh24:fmmi:ss¨;

    Session altered.

    SQL> select to_date(¨2007-8-1 03:03:04¨,¨yyyy-mm-dd hh24:mi:ss¨) from dual;

    TO_DATE(¨2007-8-103

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

    2007-8-01 03:3:4
FX 精確匹配。使用FX參數之后:
  • 字符及對應格式必須嚴格一一對應,甚至連分隔符也需要相符。
  • 不允許有多余空格。
  • 數值參與格式需要完全對應(或通過fm參數自動補足0)
  • 例如:

    SQL> select to_date(¨2007-9-26¨,¨yyyy-mm-dd¨) from dual;

    TO_DATE(¨2007-9-26¨

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

    2007-09-26 00:00:00

    SQL> select to_date(¨2007-9-26¨,¨fxyyyy-mm-dd¨) from dual;

    select to_date(¨2007-9-26¨,¨fxyyyy-mm-dd¨) from dual

    *

    ERROR at line 1:

    ORA-01862: the numeric value does not match the length of the format item

    SQL> select to_date(¨2007-09-26¨,¨fxyyyy-mm-dd¨) from dual;

    TO_DATE(¨2007-09-26

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

    2007-09-26 00:00:00

    SQL> select to_date(¨2007-9-26¨,¨fxyyyy-fmmm-dd¨) from dual;

    TO_DATE(¨2007-9-26¨

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

    2007-09-26 00:00:00

    SQL> select to_date(¨2007-9-26¨,¨fxyyyy/fmmm/dd¨) from dual;

    select to_date(¨2007-9-26¨,¨fxyyyy/fmmm/dd¨) from dual

    *

    ERROR at line 1:

    ORA-01861: literal does not match format string
X 本地的默認分隔符
  • 例如:

    SQL> select to_char(systimestamp,¨hh24:mi:ssxff¨) from dual;

    TO_CHAR(SYSTIMESTAMP,¨HH24:MI:

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

    16:21:12.609000
以下四項為時區相關參數, 明確表示某一個時區,應該聯合使用 TZH TZM 或者 TZR TZD
TZD /TZR
  • 例如:

    SQL> select to_char(systimestamp,¨tzr:tzd¨) from dual;

    TO_CHAR(SYSTIMESTAMP,¨TZR:TZD¨)

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

    +08:00:
TZH/TZM
  • 例如:

    SQL> select to_char(systimestamp,¨tzh:tzm¨) from dual;

    TO_CHA

    ------

    +08:00

應用示例:

1、 與指定日期在同一周,周1的日期是:
  • SQL> select to_date(¨2007-12-6¨, ¨yyyy-mm-dd¨)

    2 - to_char(to_date(¨2007-12-6¨, ¨yyyy-mm-dd¨), ¨d¨) + 2

    3 from dual;

    TO_DATE(¨2

    ----------

    2007-12-03

    SQL> select trunc(to_date(¨2007-12-6¨, ¨yyyy-mm-dd¨), ¨d¨) + 1 rn from dual;

    TRUNC(TO_DATE(¨2007-12-6¨,¨YYY

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

    2007-12-3

    SQL> select next_day(to_date(¨2007-12-6¨, ¨yyyy-mm-dd¨) - 7, ¨ 星期一¨) from dual;

    NEXT_DAY(TO_DATE(¨2007-12-6¨,¨

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

    2007-12-3
2、 指定日期當月最后一個星期天:
  • SQL> select max(rn)

    2 from (select to_date(¨2007-12-¨ || rownum, ¨yyyy-mm-dd¨) rn

    3 from dual

    4 connect by rownum <=

    5 (to_char(to_date(¨2007-12-31¨, ¨yyyy-mm-dd¨), ¨dd¨))) a

    6 where to_char(a.rn, ¨d¨) = 1

    7 ;

    MAX(RN)

    -----------

    2007-12-30

    SQL> select next_day(trunc(to_date(¨2007-12-31¨, ¨yyyy-mm-dd¨), ¨month¨)+31-7,¨ 星期日¨) from dual;

    NEXT_DAY(TRUNC(TO_DATE(¨2007-1

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

    2007-12-30
3、 今年第127天是幾號:
  • SQL> select to_date(¨127¨,¨ddd¨) from dual;

    TO_DATE(¨1

    ----------

    2007-05-07

?

===

http://www.5ienet.com/note/html/numdate/oracle-date-time-format(1).shtml

(1)日期及時間格式
[君三思] 2007-12-13

  經常遇到有朋友問詢關于日期時間格式化的問題(或可以通過格式化輕易解決),經過參考Oracle SQL Reference官方文檔,并附上詳細的應用示例綜合成文,希望能夠對大家學習和使用有所幫助。本篇可視為"oracle著名及非著名函數介紹"的補充!

  環境:
  • SQL> select *from v$version;

    BANNER

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

    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod

    PL/SQL Release 10.2.0.3.0 - Production

    CORE 10.2.0.3.0 Production

    TNS for 32-bit Windows: Version 10.2.0.3.0 - Production

    NLSRTL Version 10.2.0.3.0 - Production

    SQL> SELECT SESSIONTIMEZONE FROM DUAL;

    SESSIONTIMEZONE

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

    +08:00

    SQL> show parameter nls;

    NAME TYPE VALUE

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

    nls_date_format string yyyy-mm-dd hh24:mi:ss

    nls_language string SIMPLIFIED CHINESE

一、 日期及時間

格式串 說明及示例

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

-/,.;: 指定返回字串分隔符
  • 例如:

    SQL> select to_char(sysdate,¨yyyy/mm/dd¨) from dual;

    TO_CHAR(SYSDATE,¨YYYY/MM/DD¨)

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

    2007/12/14

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

    TO_CHAR(SYSDATE,¨YYYY-MM-DD¨)

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

    2007-12-14
AD/A.D. 公元標識
  • 例如:

    SQL> select to_char(sysdate,¨AD YYYY-MM-DD¨) from dual;

    TO_CHAR(SYSDATE,¨ADYYYY-MM-DD¨

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

    公元 2007-12-14
BC/B.C. 公元標識
  • 例如

    SQL> select to_char(sysdate,¨BC YYYY-MM-DD¨) from dual;

    TO_CHAR(SYSDATE,¨BCYYYY-MM-DD¨

    ------------------------------
公元 2007-12-14
    AM/A.M. 子午線標識
    • 例如:

      SQL> select to_char(sysdate,¨YYYY-MM-DD AM hh24:mi:ss¨) from dual;

      TO_CHAR(SYSDATE,¨YYYY-MM-DDAMH

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

      2007-12-14 下午 13:41:58
    PM/P.M. 子午線標識
    • 例如:

      SQL> select to_char(sysdate,¨YYYY-MM-DD PM hh24:mi:ss¨) from dual;

      TO_CHAR(SYSDATE,¨YYYY-MM-DDPMH

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

      2007-12-14 下午 13:42:23
    CC/SCC 世紀標識,S前綴指定如遇公元前的顯示,會在顯示前加(-)

      提示:

    • 如果年份中最后兩位數字在01到99(含)之間,則返回值等于年份前兩位+1
    • 如果年份中最后兩位數字是00,則返回值與年份前兩位相同
    • 例如:

      SQL> select to_char(to_date(¨2000-8-3¨,¨YYYY-MM-DD¨),¨cc¨) from dual;

      TO_CHAR(TO_DATE(¨2000-8-3¨,¨YY

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

      20

      SQL> select to_char(to_date(¨2001-8-3¨,¨YYYY-MM-DD¨),¨cc¨) from dual;

      TO_CHAR(TO_DATE(¨2001-8-3¨,¨YY

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

      21
    D 指定日期在周中的數值(范圍:1-7)
    • 例如:

      SQL> select to_char(to_date(¨2007-12-14¨,¨yyyy-mm-dd¨),¨D¨) from dual;

      TO_CHAR(TO_DATE(¨2007-12-14¨,¨

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

      6
    DD 指定日期在當月中的天數(范圍:1-31)
    • 例如:

      SQL> select to_char(to_date(¨2007-12-14¨,¨yyyy-mm-dd¨),¨DD¨) from dual;

      TO_CHAR(TO_DATE(¨2007-12-14¨,¨

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

      14
    DDD 指定日期在當年中的天數(范圍:1-366)
    • 例如:

      SQL> select to_char(to_date(¨2007-12-14¨,¨yyyy-mm-dd¨),¨DDD¨) from dual;

      TO_CHAR(TO_DATE(¨2007-12-14¨,¨

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

      348
    DAY 指定日期在周中的名稱
    • 例如:

      SQL> select to_char(to_date(¨2007-12-14¨,¨yyyy-mm-dd¨),¨Day¨) from dual;

      TO_CHAR(TO_DATE(¨2007-12-14¨,¨

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

      星期五
    MON 返回指定日期的月份簡寫
    • 例如:

      SQL> select to_char(sysdate,¨MON¨) from dual;

      TO_CHAR(SYSDATE,¨MON¨)

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

      12 月
    與DY同,中文看不出簡寫效果。
      MONTH 返回指定日期的月份全稱
      • 例如:

        SQL> select to_char(sysdate,¨MONTH¨) from dual;

        TO_CHAR(SYSDATE,¨MONTH¨)

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

        12 月
      YEAR/SYEAR 返回字符型年,此處s前綴與SCC處相同
      • 例如:

        SQL> select to_char(sysdate,¨year¨) from dual;

        TO_CHAR(SYSDATE,¨YEAR¨)

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

        two thousand seven
      YYYY/SYYYY 返回數字型年,此處s前綴與SCC處相同
      • 例如:

        SQL> select to_char(sysdate,¨yyyy¨) from dual;

        TO_CHAR(SYSDATE,¨YYYY¨)

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

        2007
      MM 返回指定日期的月份(范圍:1-12)
      • 例如:

        SQL> select to_char(sysdate,¨MM¨) from dual;

        TO_CHAR(SYSDATE,¨MM¨)

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

        12
      HH 小時(范圍:1-12)
      • 例如:

        SQL> select to_char(sysdate,¨am hh¨) from dual;

        TO_CHAR(SYSDATE,¨AMHH¨)

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

        下午 02
      HH12 小時(范圍:1-12)
      • 例如:

        SQL> select to_char(sysdate,¨am hh12¨) from dual;

        TO_CHAR(SYSDATE,¨AMHH12¨)

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

        下午 02
      HH24 小時(范圍:0-23)
      • 例如:

        SQL> select to_char(sysdate,¨am hh24¨) from dual;

        TO_CHAR(SYSDATE,¨AMHH24¨)

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

        下午 14
      MI 返回指定時間的分鐘(范圍0-59)
      • 例如:

        SQL> select to_char(sysdate,¨MI¨) from dual;

        TO_CHAR(SYSDATE,¨MI¨)

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

        05
      SS 返回指定時間的秒數(范圍:0-59)
      • 例如:

        SQL> select to_char(sysdate,¨ss¨) from dual;

        TO_CHAR(SYSDATE,¨SS¨)

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

        34
      FF[1-9] 返回毫秒數,可指定長度1-9,默認6位
      • 例如:

        SQL> select to_char(systimestamp,¨ff4¨) from dual;

        TO_CHAR(S

        ---------

        6710
      Y,YYY 返回有逗號分隔顯示的年
      • 例如:

        SQL> select to_char(sysdate,¨y,yyy¨) from dual;

        TO_CHAR(SYSDATE,¨Y,YYY¨)

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

        2,007
      I/IY/IYY/IYYY 返回ISO標準年
      • 例如:

        SQL> select to_char(to_date(¨187-4-3¨,¨yyyy-mm-dd¨),¨IYYY¨) from dual;

        TO_CHAR(TO_DATE(¨187-4-3¨,¨YYY

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

        0187
      Y/YY/YYY 以指定長度返回日期的年份
      • 例如:

        SQL> select to_char(sysdate,¨yy¨) from dual;

        TO_CHAR(SYSDATE,¨YY¨)

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

        07
      W 返回指定日期在當月中的第X周(范圍:1-5)
      • 例如:

        SQL> select to_char(to_date(¨2007-6-18¨,¨yyyy-mm-dd¨),¨w¨) from dual;

        TO_CHAR(TO_DATE(¨2007-6-18¨,¨Y

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

        3
      WW 返回指定日期在當年中的第X周(范圍:1-53)
      • 例如:

        SQL> select to_char(to_date(¨2007-6-18¨,¨yyyy-mm-dd¨),¨ww¨) from dual;

        TO_CHAR(TO_DATE(¨2007-6-18¨,¨Y

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

        25
      IW 指定日期在當年中第X周(范圍:1-52或1-53(潤年))
      • 例如:

        SQL> select to_char(sysdate,¨IW¨) from dual;

        TO_CHAR(SYSDATE,¨IW¨)

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

        50
      RM 以羅馬數字形式返回月份(范圍I-XII)
      • 例如:

        SQL> select to_char(to_date(¨2007-11-3¨,¨yyyy-mm-dd¨),¨RM¨) from dual;

        TO_CHAR(TO_DATE(¨2007-11-3¨,¨Y

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

        XI
      Q 返回指定日期的季度(范圍:1-4)
      • 例如:

        SQL> select to_char(to_date(¨2007-2-3¨,¨yyyy-mm-dd¨),¨q¨) from dual;

        TO_CHAR(TO_DATE(¨2007-2-3¨,¨YY

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

        1
      J 自公元前 4712 年1月1日到指定日期的總天數
      • 例如:

        SQL> select to_char(sysdate,¨J¨) from dual;

        TO_CHAR(SYSDATE,¨J¨)

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

        2454449

      總結

      以上是生活随笔為你收集整理的Oracle格式化数字和日期的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。