0
我想通過那些比我更瞭解PL/SQL和T-SQL的人來運行這個問題。下面是我繼承的一些代碼,它的返回日期是1個小時。當在遠程查詢的select語句中刪除「to_char(i.UPDATE_DT,'YYYY-MM-DD HH24:MI:SS.FF3'')」時,小時偏移量將消失。我擔心這種改變可能會產生的其他影響,所以我的問題是爲什麼有人通過OpenQuery將Oracle時間轉換爲字符串,然後在select語句中使用T-SQL轉換?我在這裏錯過了什麼,爲什麼to_char會導致偏移量(如果是這個原因)?Oracle 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
這是我認爲的第一件事...但奇怪的是,刪除to_char函數也會刪除偏移量,這似乎與夏令時無關,但我還不確定。 – ewomack
好了,to_char被提交給oracle服務器進行處理,所以它將依賴於該時間設置。 tsql轉換將由sql server完成,sql server必須將其作爲日期時間給出的字符串解釋,然後才能將其轉換爲自己的用途。 Theres有機會讓SQL在解釋字符串時得到錯誤的時區。嘗試獲得oracle以輸出字符串的區域部分 – PaulMolloy
好吧,我應該補充說,當我在Oracle開發人員中自行運行遠程查詢時也會發生此問題,因此單獨在Oracle側刪除to_char也會生成偏移量,這更奇怪。但是SQL和Oracle之間的時區確實匹配。 – ewomack