Sql 带有时间戳的Oracle列(6)使用ssis提取数据类型

Sql 带有时间戳的Oracle列(6)使用ssis提取数据类型,sql,oracle,oracle11g,ssis,timestamp,Sql,Oracle,Oracle11g,Ssis,Timestamp,我正在尝试使用SSIS将oracle表数据拉入sql server。我有一个包变量,用于保存需要在oracle db中激发的源查询。我有一个带有oledb源(oracle)和oledb目标(sql server)的数据流任务 oledb源查询(变量)如下所示 Select A,B,C From "Table" TT Where C in (Select coalesce(ab,cd) as c From "Table" T2

我正在尝试使用SSIS将oracle表数据拉入sql server。我有一个包变量,用于保存需要在oracle db中激发的源查询。我有一个带有oledb源(oracle)和oledb目标(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\u Upd\u Dt
是源oracle DB中的
时间戳(6)
,默认值为
LocalTimeStamp

我的问题是,我的输入参数值应该是什么格式,这样我就不必将
Last\u Upd\u Dt
列转换为
to\u DATE()
to\u CHAR()

如果我使用SSI运行该查询,我会得到

ORA-01843:不是有效月份

只用

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

您可以参考以下演示:

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
日期
时间戳
关键字。您可以将逻辑表示为:

where Last_Upd_Dt >= TIMESTAMP '2018-09-24 12:00:00'
如果没有时间组件,请执行以下操作:

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