2013年9月9日 星期一

[2012] 格式化函數FORMAT介紹

格式化函數FORMAT可將日期/時間與數值以指定格式/地區設定轉換為格式字串。語法如下:
FORMAT ( value, format [, culture ] )
value(必要參數)
欲格式化之運算式。
format(必要參數)
format 引數應為有效的 .NET Framework 格式字串。支援標準格式字串 (例如 "C" "D")日期與數值自訂字元模式 ( "yyyy-MM-dd"),但不支援複合格式。
culture :(選擇性參數)
指定文化特性格式。如未提供 culture 引數,則會使用目前工作階段的語言 可使用SET LANGUAGE 陳述式隱含或明確加以設定。

FORMAT格式化函數可使用標準格式字串 (例如: "D""C")自訂字元模式 (: "yyyy-MM-dd""###,###")日期與數值型態以.NET格式產生格式化字串。建議可以參考C#書籍查閱如datatime.ToString("yyyy-MM-dd")double.ToString("###,##0.##")之使用方法。

日期格式化
功能

SQL / 結果
SQL
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd')        "yyyy-MM-dd"
  , FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss')  "yyyy-MM-dd HH:mm:ss"
  , FORMAT(GETDATE(), 'HH')                     "24H"
  , FORMAT(GETDATE(), 'hh')                     "12h"
  , FORMAT(GETDATE(), 'yyyy-MM-01')            "1stDayofMonth"
  , FORMAT(GETDATE(), 'd', 'en-US' )           "US(fmt)"
  , FORMAT(GETDATE(), 'd', 'zh-tw' )           "TW(fmt)"
  , FORMAT(GETDATE(), 'D', 'zh-tw' )           "Chinese(ZH)"
結果


數值格式化
功能
SQL / 結果
SQL
SELECT Val
     , FORMAT(Val, 'N')  "Number fmt"
     , FORMAT(Val, 'G')  "General fmt"
     , FORMAT(Val, 'C', 'en-us')  "Currency US"
     , FORMAT(Val, 'C', 'zh-tw')  "Currency TW"
     , FORMAT(Val, '##,###.###') "##,###,###"
     , FORMAT(Val, '##,##0.##')  "##,##0,##"
FROM
--測試1-浮點數
     (VALUES (1912.4565), (1912.4523), (1912.553), (0.853), (2.853)
     ) AS NumTest(Val)
--測試2-整數
--   (VALUES (1912)
--   ) AS NumTest(Val)
測試-1

測試-2
對於數值格式化,以上所測試可發現在小數位均進行隱喻(implicit)四捨五入之運算
l   N(number)數值格式及CCurrency)貨幣格式將一律產生小數位2
l   G(General)一般格式視資料型態決定是否具有小數位,資料為整數則無小數位,若為浮點數則產生2位小數位。
l   自定格式模式時,小數位部分之位數依定義格式而決定並進行四捨五入,建議具小數位者其個位數格式應設應為0,當數值絕對值為小於1時,個位數部分可自動以0填補。就使用彈性而言,建議使用自定格式模式。

沒有留言:

張貼留言