SSIS 并将带日期的查询发送到 Oracle

SSIS and sending query with date to Oracle

我正在尝试创建一个流程以将数据从 Oracle table 提取到 SQL 服务器 table。我正在向 Oracle 发送以下查询以获取数据:

select distinct CHLD.id,
       nvl(chld_c_spl, 'N'),
       to_char(chld_d_start, 'YYYY-MM-DD') chld_d_start,
       to_char(chld_d_end, 'YYYY-MM-DD') chld_d_end
  from child chld, 
       picture ptct
 where CHLD.id = PTCT.chld_id
   and nvl(chld_d_end, sysdate) >= to_date('01-JAN-2014')
   and chld_c_veri in ('HC','DR')
   and nvl(ptct_term, ptct_end) >= to_date('01-JAN-2014')

当我 运行 在 Oracle 中查询时,我返回了 505 行。当我执行 SSIS 包时,插入了 1,504 行。出于某种原因,SSIS 传递的查询似乎没有查看 ptct table (nvl(ptct_term, ptct_end) >= to_date(' 01-JAN-2014')) 因为所有额外的行都是在图片中没有有效条目的行 (ptct) table.

有人对这里发生的事情有什么建议吗?原始查询在 ptct table 上使用了 exists 子句而不是连接,但它不起作用所以我转换为连接。当有 exists 子句时,会看到与上述类似的结果。

您的 Oracle 查询工具(sqlplus、toad...)和 SSIS 之间的 NLS 设置很可能不同。尝试明确给出您的日期,如 to_date('2014-01-01','YYYY-MM-DD').

select distinct CHLD.id,
       nvl(chld_c_spl, 'N'),
       to_char(chld_d_start, 'YYYY-MM-DD') chld_d_start,
       to_char(chld_d_end, 'YYYY-MM-DD') chld_d_end
  from child chld, 
       picture ptct
 where CHLD.id = PTCT.chld_id
   and nvl(chld_d_end, sysdate) >= to_date('2014-01-01','YYYY-MM-DD')
   and chld_c_veri in ('HC','DR')
   and nvl(ptct_term, ptct_end) >= to_date('2014-01-01','YYYY-MM-DD')