網頁

2011年4月7日 星期四

db2 Function - timestamp 問題

一直以來 db2 可使用的 內建 function 真的 有些奇怪
在 版本 9.5 可以 run 的 在 9.1 有時 真的 需要保佑 ,
其中 對 TimeStamp 的 運行 會有不是一般人可理解的地方
下方funcion 是多次運用的紀錄:


COALESCE: 
主要是將 NULL 轉成其他 所以 類似於oracle 的NVL 內容

發生錯誤的 SQL CODE=180
       COALESCE(欄位值, '')   是不會成功的
要修正成
        COALESCE( 欄位值,'1000-01-01-00.00.00.000000')
其中 第二個是需要 timestamp 格式才可以

CHAR
將值變成想要的格式 但是 跟to_char 不同
用法 如
    CHAR(col, fomat)
fomat 可用的
date 
 ISO:     ==>2005-12-31
USA:     ==>12/31/2005
EUR     ==>31.12.2005
JIS       ==>2005-11-30
LOCAL   ==> 看你的 設定
time

 ISO:     ==>19.42.21
USA:     ==>19:42:21

EUR     ==>19.42.21
JIS       ==>19.42.21
LOCAL   ==> 看你的 設定
timestamp
抱歉 只能用  ISO
char(current timestamp) ==> 2005-11-30-19.42.21.873002

VARCHAR_FORMAT or TO_CHAR
(9.1 to_char 會work 9.5 varchar_format 比較理想)
就是 oracle 中的 to_char 只是 比較好玩 
   TO_CHAR(col,fomat)
其中 fomat
有試過
'YYYY-MM-DD HH24:MI:SS'
"YYYY-MM-DD HH:MM:SS"

,VARCHAR_FORMAT(ts1,'YYYY-MM-DD HH24:MI:SS')

TO_DATE (string_expression_r_r, 'YYY-MM-DD HH24:MI:SS')

沒有留言:

張貼留言