隨筆-314  評論-209  文章-0  trackbacks-0
          Postgres 格式化函數提供一套有效的工具用于把各種數據類型(日期/時間,int,float,numeric)轉換成格式化的字符串以及反過來從格式化的字符串轉換成原始的數據類型。
          注意:所有格式化函數的第二個參數是用于轉換的模板。
          表 5-7. 格式化函數 
           
          函數返回描述例子
          to_char(timestamp, text)text把 timestamp 轉換成 stringto_char(timestamp 'now','HH12:MI:SS')
          to_char(int, text)text把 int4/int8 轉換成 stringto_char(125, '999')
          to_char(float, text)text把 float4/float8 轉換成 stringto_char(125.8, '999D9')
          to_char(numeric, text)text把 numeric 轉換成 stringto_char(numeric '-125.8', '999D99S')
          to_date(text, text)date把 string 轉換成 dateto_date('05 Dec 2000', 'DD Mon YYYY')
          to_timestamp(text, text)date把 string 轉換成 timestampto_timestamp('05 Dec 2000', 'DD Mon YYYY')
          to_number(text, text)numeric把 string 轉換成 numericto_number('12,454.8-', '99G999D9S')

          表 5-8. 用于 date/time 轉換的模板 
           

          模板描述
          HH一天的小時數 (01-12)
          HH12一天的小時數 (01-12)
          HH24一天的小時數 (00-23)
          MI分鐘 (00-59)
          SS秒 (00-59)
          SSSS午夜后的秒 (0-86399)
          AM or A.M. or PM or P.M.正午標識(大寫)
          am or a.m. or pm or p.m.正午標識(小寫)
          Y,YYY帶逗號的年(4 和更多位)
          YYYY年(4和更多位)
          YYY年的后三位
          YY年的后兩位
          Y年的最后一位
          BC or B.C. or AD or A.D.年標識(大寫)
          bc or b.c. or ad or a.d.年標識(小寫)
          MONTH全長大寫月份名(9字符)
          Month全長混合大小寫月份名(9字符)
          month全長小寫月份名(9字符)
          MON大寫縮寫月份名(3字符)
          Mon縮寫混合大小寫月份名(3字符)
          mon小寫縮寫月份名(3字符)
          MM月份 (01-12)
          DAY全長大寫日期名(9字符)
          Day全長混合大小寫日期名(9字符)
          day全長小寫日期名(9字符)
          DY縮寫大寫日期名(3字符)
          Dy縮寫混合大小寫日期名(3字符)
          dy縮寫小寫日期名(3字符)
          DDD一年里的日子(001-366)
          DD一個月里的日子(01-31)
          D一周里的日子(1-7;SUN=1)
          W一個月里的周數
          WW一年里的周數
          CC世紀(2 位)
          JJulian 日期(自公元前4712年1月1日來的日期)
          Q季度
          RM羅馬數字的月份(I-XII;I=JAN)-大寫
          rm羅馬數字的月份(I-XII;I=JAN)-小寫

          所有模板都都允許使用前綴和后綴修改器。模板里總是允許使用修改器。前綴 'FX' 只是一個全局修改器。

          表 5-9. 用于日期/時間模板 to_char() 的后綴 
           

          后綴描述例子
          FM填充模式前綴FMMonth
          TH大寫順序數后綴DDTH
          th小寫順序數后綴DDTH
          FX固定模式全局選項(見下面)FX Month DD Day
          SP拼寫模式(還未實現)DDSP

          用法須知:

          • 如果沒有使用 FX 選項,to_timestamp 和 to_date 忽略空白。FX 必須做為模板里的第一個條目聲明。
          • 反斜杠("\")必須用做雙反斜杠("\\"),例如 '\\HH\\MI\\SS'
          • 雙引號('"')之間的字串被忽略并且不被分析。如果你想向輸出寫雙引號,你必須在雙引號前面放置一個雙反斜杠('\\'),例如 '\\"YYYY Month\\"'
          • to_char 支持不帶前導雙引號('"')的文本,但是在雙引號之間的任何字串會被迅速處理并且還保證不會被當作模板關鍵字解釋(例如:'"Hello Year: "YYYY')。
          表 5-10. 用于 to_char(numeric) 的模板 
           
          模板描述
          9帶有指定位數的值
          0前導零的值
          . (句點)小數
          , (逗號)分組(千)分隔符
          PR尖括號內負值
          S帶負號的負值(使用本地化)
          L貨幣符號(使用本地化)
          D小數點(使用本地化)
          G分組分隔符(使用本地化)
          MI在指明的位置的負號(如果數字 < 0)
          PL在指明的位置的正號(如果數字 > 0)
          SG在指明的位置的正/負號
          RN羅馬數字(輸入在 1 和 3999 之間)
          TH or th轉換成序數
          V移動 n 位(小數)(參閱注解)
          EEEE科學記數。現在不支持。

          用法須知:

          • 使用 'SG','PL' 或 'MI' 的帶符號字并不附著在數字上面;例如,to_char(-12, 'S9999') 生成 ' -12',而 to_char(-12, 'MI9999') 生成 '- 12'Oracle 里的實現不允許在 9 前面使用 MI,而是要求 9 在 MI 前面。
          • PLSG,和 TH 是 Postgres 擴展。
          • 9 表明一個與在 9 字串里面的一樣的數字位數。如果沒有可用的數字,那么使用一個空白(空格)。
          • TH 不轉換小于零的值,也不轉換小數TH 是一個 Postgres 擴展。
          • V 方便地把輸入值乘以 10^n,這里 n 是跟在 V 后面的數字。to_char 不支持把 V 與一個小數點綁在一起使用(例如. "99.9V99" 是不允許的)。
          表 5-11. to_char 例子 
           
          輸入輸出
          to_char(now(),'Day, HH12:MI:SS')'Tuesday , 05:39:18'
          to_char(now(),'FMDay, HH12:MI:SS')'Tuesday, 05:39:18'
          to_char(-0.1,'99.99')' -.10'
          to_char(-0.1,'FM9.99')'-.1'
          to_char(0.1,'0.9')' 0.1'
          to_char(12,'9990999.9')' 0012.0'
          to_char(12,'FM9990999.9')'0012'
          to_char(485,'999')' 485'
          to_char(-485,'999')'-485'
          to_char(485,'9 9 9')' 4 8 5'
          to_char(1485,'9,999')' 1,485'
          to_char(1485,'9G999')' 1 485'
          to_char(148.5,'999.999')' 148.500'
          to_char(148.5,'999D999')' 148,500'
          to_char(3148.5,'9G999D999')' 3 148,500'
          to_char(-485,'999S')'485-'
          to_char(-485,'999MI')'485-'
          to_char(485,'999MI')'485'
          to_char(485,'PL999')'+485'
          to_char(485,'SG999')'+485'
          to_char(-485,'SG999')'-485'
          to_char(-485,'9SG99')'4-85'
          to_char(-485,'999PR')'<485>'
          to_char(485,'L999')'DM 485
          to_char(485,'RN')' CDLXXXV'
          to_char(485,'FMRN')'CDLXXXV'
          to_char(5.2,'FMRN')V
          to_char(482,'999th')' 482nd'
          to_char(485, '"Good number:"999')'Good number: 485'
          to_char(485.8,'"Pre-decimal:"999" Post-decimal:" .999')'Pre-decimal: 485 Post-decimal: .800'
          to_char(12,'99V999')' 12000'
          to_char(12.4,'99V999')' 12400'
          to_char(12.45, '99V9')' 125'
          posted on 2012-03-20 09:09 xzc 閱讀(4693) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 松潘县| 苍山县| 观塘区| 阿巴嘎旗| 昌宁县| 年辖:市辖区| 福泉市| 堆龙德庆县| 青田县| 贵溪市| 镇原县| 牡丹江市| 松滋市| 邛崃市| 曲麻莱县| 华池县| 乐山市| 宜章县| 应城市| 江阴市| 本溪| 育儿| 砚山县| 伊春市| 赤城县| 拉孜县| 霍邱县| 祁连县| 福安市| 昭觉县| 报价| 兰考县| 邻水| 温宿县| 正蓝旗| 安宁市| 贵德县| 子长县| 蒙自县| 九龙县| 沈丘县|