Запрос из Oracle не работает в SSIS - PullRequest
0 голосов
/ 22 марта 2012

По какой-то причине этот запрос не работает в SSIS

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

Но когда я проверил в Toad работает отлично, что я делаю не так? Есть ли другой способ обработки дат? И я знаю, что проблема связана со сравнением дат, потому что, когда я удаляю это условие, запрос возвращает значения

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Это работает в жабе? Я ожидал бы, что это потерпит неудачу из-за to_date(sysdate, 'dd/mm/yyyy'). Вы пытаетесь преобразовать дату в дату, в которой Oracle обычно выдает ошибку.

То, что вы хотите сделать, это truncate дата, включающая только год, месяц и день, т. Е. Без компонента времени.

Это будет trunc(sysdate, 'DD'). trunc(sysdate) вернет то же значение, что и 'DD', и его синонимы используются по умолчанию, но приятно быть явным.

Вы делаете то же самое со своей колонкой FECHACREACION? Если нет, и это символ, могу ли я порекомендовать сохранить его как дату?

0 голосов
/ 22 марта 2012

Сначала Чтобы решить мою проблему, мне нужно изменить 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')
.
0 голосов
/ 22 марта 2012

для системной даты, вместо sysdate вы должны использовать функцию GETDATE () в ssis.

для получения дополнительной информации

...