2017-12-12 3 views
0

これは愚かな疑問のように思えますが、あなたはおそらく正しいでしょう。ジョブ実行時にこのデータを利用できましたか?

私たちは、現在の日からOracleデータをダウンロードしてtsqlテーブルに挿入するために毎日5:30のASTで動作SSMS仕事をしています。

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時間オフセットがあることを考慮して、ジョブが実行されたときにデータが利用できないと考えています。私はOracleサーバーがどこにあるのかわかりません。

これは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(2012年12月12日3:52:57 AM -06:00)とジョブが実行されたAST時間(AMT 5:30 AM)の間に118分の違いがあると言っていますか? – rbhat

+0

私は最初のバリデーションがそうだと言っていますが、二重にチェックしてください。前述の通り、タイムゾーンは非常に混乱しています。しかし、私が含まれているコードは、何が起こっているのかを検証するためのプロセスです。私はあなたの情報に基づいていくつかの時間を誤って読んでいるかもしれないことにほとんど心配しています。だから私を二重にチェックして、あなた自身の検証の出発点として自分のコードを使用してください。 –

関連する問題