Столбец Oracle с извлечением типа данных Timestamp (6) с использованием ssis - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь получить данные таблицы оракула на сервере sql с помощью служб SSIS.У меня есть переменная пакета, которая содержит исходный запрос, который должен быть запущен в 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 : недействительный месяц

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Oracle поддерживает ключевые слова DATE и TIMESTAMP.Вы можете выразить логику как:

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

Если у вас не было компонента времени, вы должны сделать:

where Last_Upd_Dt >= DATE '2018-09-24'
0 голосов
/ 26 сентября 2018

Просто используйте

... 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
...