[英]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支持 DATE
和TIMESTAMP
关键字。 您可以将逻辑表示为:
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.