Sybase datetime型別對映為Oracle timestamp

尛樣兒發表於2010-08-01

我們在從Sybase抽取資料到Oracle時,發現Sybase的datetime儲存了毫秒級的資料,而Oracle的date型別只保留到秒級的資料,這樣抽取過來會自動截掉毫秒,就導致了違反唯一約束的情況。但當Oracle更改成Timestamp型別之後透過gateway使用CTAS的方式插入任然會截斷毫秒的資料。如何處理喃?找到了一篇文章:


如何顯示毫秒的資料:
SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff') from dual;

TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DDHH24:MI:SS:FF')
---------------------------------------------------------------------------
2010-08-01 20:46:40:055862

處理方法:
在Sybase建立一個要抽取表的檢視,包含datepart(ms,getdate())提取出來的毫秒資料。
對欄位做如下處理:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
to_timestamp(m_datetime||ms1,'yyyy-mm-dd hh24:mi:ssff');

這樣就可以將毫秒級的資料插入,不過比較麻煩哈。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-669961/,如需轉載,請註明出處,否則將追究法律責任。

相關文章