Sql-Server

SSIS派生列條件時間修改

  • October 16, 2015

我正在使用 SSIS 將數據從 MySQL 數據庫傳輸到 SQL Server 數據庫。然而,有一點我目前堅持。MySQL TIME 數據類型支持大於或等於 24:00:00 的值,而 SQL Server TIME 上限為 23:59:59。我正在傳輸的表之一有一個 TIME 列,在 MySQL 中是 24:00:00。從邏輯上講,在我們的業務案例中,這是一個“停止時間”,因此相當於 00:00:00,我正在嘗試找到一種方法來使用 SSIS 轉換為該值出現時。

派生列似乎是執行此操作的方法,但我似乎沒有牢牢掌握語法,並且 SSIS 條件表達式中的 TIME 文字的資源很少。到目前為止,這是我正在嘗試使用的內容:

time == '24:00:00' ? time = '00:00:00' : time = time

當然,哪個只返回錯誤,因為我確定該語法的一部分是不正確的。我有(我相信)邏輯,只是零星記錄的語法是問題所在。

很近。會是

time == "24:00:00" ? "00:00:00" : time

三元運算符看起來像(condition) ? true : false除了 ForEach 列舉器的顯著例外,在 SSIS 表達式中的其他任何地方都不能使用像 time = “00:00:00” 這樣的賦值。它基本上會被分配給它的任何列或變數所暗示。

time如果實際檢測到列的數據類型,因為DT_TIME上面的表達式可能會中斷,因為這超出了 DT_TIME 值的允許域,但它實際上會在源組件級別中斷/失敗/錯誤(OLE DB/ADO NET/ ODBC 源)

引用自:https://dba.stackexchange.com/questions/118303