2017-12-12 18 views
0

이것은 바보 같은 질문처럼 보일 것이며, 아마도 옳을 것입니다. 작업을 실행할 때이 데이터를 사용할 수 있습니까?

우리는 현재 일에서 오라클 데이터를 다운로드하고 tsql 테이블에 삽입 할 5시 30 분 오전 AST 매일에서 실행되는 SSMS 작업을해야합니다. 일반적으로 다운로드하는 Oracle의 행은 다음과 같습니다.

Items_Sold 
28 

Date_Insert 
12/12/2017 3:52:57 AM -06:00 

Date_UTC   
12/12/2017 7:00:00 AM 

DateTime_Zone 
12/12/2017 3:00:00 AM -04:00 

SalesDate 
12/12/2017 3:00:00 AM 

작업이 성공적으로 실행되었지만이 특정 행을 다운로드하지 않았습니다. 나는 Date_Insert-06:00 시간 오프셋이 있다고 생각하여 작업을 실행했을 때 데이터를 사용할 수 없다고 생각합니다. 오라클 서버의 위치를 ​​알지 못합니다.

이것은 Data Flow Task에 사용하는 Oracle 쿼리입니다. 이 문제는 몇 개월 동안 성공적으로 실행 되었기 때문에 문제가 아닙니다. 나는 단순히 FYI로 게시하고있다 :

SELECT 
SalesDate, Items_Sold 
FROM ORACLE_TABLE 
where 
SalesDate >= trunc(sysdate) 

고마워.

답변

2

멍청한 질문이 아닙니다. 표준 시간대는 정말 혼란 스럽습니다! 다음은이를 이해하는 데 도움이되는 일련의 코드입니다. 나는 이것이 "당신의 가정이 올바를 때"작업이 진행될 때 데이터를 사용할 수 없다고 생각한다고 생각합니다. " 귀하의 질문과 정보를 토대로 몇 가지 잘못된 가정을 한 경우, 제가 포함시킨 예와 함께 이것이 시작될 것입니다. 해피 코딩!

SQL 2016 has a really cool AT TIME ZONE feature 이렇게하면 쉽게 처리 할 수 ​​있습니다.

DECLARE @timestamp_ast  DATETIMEOFFSET = N'12/12/2017 00:05:30:00 AM -4:00' 
     , @timestamp_oracle DATETIMEOFFSET = N'12/12/2017 00:03:52:57 AM -06:00'; 

SELECT @timestamp_ast  AS [timestamp_ast] 
     , @timestamp_oracle AS [timestamp_oracle]; 

SELECT datediff(minute, @timestamp_ast, @timestamp_oracle) AS [minutes_difference]; 

-- example - if first timestamp is before, there is a [positive_minutes_difference] 
SELECT datediff(minute, N'00:01:00', N'00:02:00') AS [positive_minutes_difference]; 

-- example - if first timestamp is after, there is a [negative_minutes_difference] 
SELECT datediff(minute, N'00:03:00', N'00:02:00') AS [negative_minutes_difference]; 
+0

감사합니다. 따라서 Date_Insert (12/12/2017 3:52:57 AM -06 : 00)와 작업이 실행 된 AST 시간 (오전 5:30 AM AST) 사이에 118 분의 차이가 있다고 말하는 것입니까? – rbhat

+0

처음 유효성 검사에서 말하는 것을 말하고 있지만 두 번 확인해야합니다. 언급했듯이 표준 시간대는 매우 혼란 스럽습니다! 그러나 내가 포함 된 코드는 진행 상황을 확인하기 위해 거쳐야 할 과정입니다. 나는 당신의 정보에 따라 시간의 일부를 잘못 읽었을 까봐 두려워합니다. 그래서 두 번 확인하고 자신의 유효성 검사를위한 출발점으로 내 코드를 사용하십시오. –