この号は、私よりも PL/SQL と T-SQL についてよく知っている人に任せたいと思います。以下は私が継承したコードで、1 時間ずれた日付を返しています。リモート クエリの select ステートメントで "to_char(i.UPDATE_DT, ''YYYY-MM-DD HH24:MI:SS.FF3'')" を削除すると、時間オフセットがなくなります。この変更がもたらす可能性のある他の影響について心配しているので、私の質問は、なぜ誰かが OpenQuery を介して Oracle 時間を文字列に変換し、select ステートメントで T-SQL convert を使用するのでしょうか? ここで何が欠けていますか? to_char がオフセットを引き起こすのはなぜですか (それが理由である場合)?
SELECT
CSE_ID AS ID,
OTHR_CSE_ID AS Case_Num,
convert(datetime,UPDATE_DT,121) AS Export_Time
FROM
OpenQuery( OracleTbl, '
SELECT c.CSE_ID, r.OTHR_CSE_ID, to_char(i.UPDATE_DT,''YYYY-MM-DD HH24:MI:SS.FF3'') UPDATE_DT
FROM AE_CSES c
INNER JOIN CSES i ON i.CASE_ID = c.CSE_ID AND i.ACTION_CD = ''INS''
INNER JOIN OTH_CSE_REFS r ON r.CSE_ID = c.CSE_ID AND r.OTH_CS_REF_SEQ_NBR = 1 AND r.OTHER_SOURCE_TYPE = ''SIE''
') AS i