来自oracle的查询在SSIS中不起作用

时间:2012-03-22 00:08:19

标签: sql oracle ssis etl

由于某些原因,此查询在SSIS中不起作用

Select 
    IDLOGARCHIVOS, 
    NOMBREARCHIVO, 
    FECHACREACION 
from 
   ATEN_TDCMARK.LOGARCHIVOS 
where 
    trunc(FECHACREACION, 'DDD') = trunc(sysdate, 'DDD')

但是当我在Toad中测试时,我做错了什么?有没有不同的方式来治疗日期?我知道它与日期比较有关的问题,因为当我删除这个条件时,查询返回值

3 个答案:

答案 0 :(得分:1)

这在Toad有用吗?由于to_date(sysdate, 'dd/mm/yyyy'),我原以为它会失败。您正在尝试将日期转换为日期,Oracle通常会在此日期引发错误。

您似乎想要做的是truncate仅包括年,月和日的日期,即没有时间成分。

这将是trunc(sysdate, 'DD')trunc(sysdate)将返回与'DD'相同的值,并且它的同义词是默认值,但显式很好。

您对列FECHACREACION做了同样的事吗?如果不是,那么我可以建议您将其存储为日期吗?

答案 1 :(得分:0)

对于系统日期,您必须在ssis中使用GETDATE()函数代替sysdate ..

for more information

答案 2 :(得分:0)

首先要解决我的问题,我需要在我的机器上的oracle注册表中修改NS_LANG,找到(HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0)。然后我重新启动机器并基于@Ben的答案我修改了我的查询并在etl OF SSIS中工作

Select 
    IDLOGARCHIVOS, 
    NOMBREARCHIVO, 
    FECHACREACION 
from 
   ATEN_TDCMARK.LOGARCHIVOS 
where 
    trunc(FECHACREACION, 'DDD') = trunc(sysdate, 'DDD')