簡體   English   中英

使用SSIS提取帶有Timestamp(6)數據類型的Oracle列

[英]Oracle column with Timestamp(6) data type extract using ssis

我正在嘗試使用SSIS將oracle表數據拉入sql服務器。 我有一個包含要在oracle db中觸發的源查詢的包變量。我有一個帶有oledb source(oracle)和oledb destination(sql server)的數據流任務。

oledb源查詢(變量)如下

Select A,B,C 
  From "Table" TT  
 Where C in (Select coalesce(ab,cd) as c 
               From "Table" T2 
              Where Last_Upd_Dt >= '2018-09-24 12:00:00')

Last_Upd_Dt是一個TimeStamp(6)具有默認值LocalTimeStamp在源Oracle數據庫

我的問題是輸入參數值應采用哪種格式,這樣我Last_Upd_Dt列轉換為TO_DATE()TO_CHAR()等。

如果我使用SSIS運行該查詢,我會得到

ORA-01843無效月份

只需使用

... Where Last_Upd_Dt >= to_date('2018-09-24 12:00:00','yyyy-mm-dd hh24:mi:ss')

要么

... Where Last_Upd_Dt >= timestamp'2018-09-24 12:00:00'

您可以參考以下演示:

SQL> create table tab ( id int not null, time timestamp(6) default LocalTimeStamp not null );

Table created

SQL> insert into tab(id) values(1);

1 row inserted

SQL> select * from tab t;

ID TIME
-- --------------------------
 1 26/09/2018 08:23:23,068025


SQL> select * from tab where Last_Upd_Dt >= to_date('2018-09-24 12:00:00','yyyy-mm-dd hh24:mi:ss');

ID TIME
-- --------------------------
 1 26/09/2018 08:23:23,068025

SQL> select * from tab where Last_Upd_Dt >= timestamp'2018-09-24 12:00:00';

ID TIME
-- --------------------------
 1 26/09/2018 08:23:23,068025


SQL> select * from tab where Last_Upd_Dt >= to_date('2018-09-26 12:00:00','yyyy-mm-dd hh24:mi:ss');

ID TIME
-- --------------------------   
                              --> no rows selected

Oracle支持 DATETIMESTAMP關鍵字。 您可以將邏輯表示為:

where Last_Upd_Dt >= TIMESTAMP '2018-09-24 12:00:00'

如果沒有時間部分,則可以執行以下操作:

where Last_Upd_Dt >= DATE '2018-09-24'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM