Sql-Server

將空字元串轉換為空日期時間

  • January 14, 2020

考慮 Microsoft SQL Server 2012 中的以下程式碼:

INSERT INTO [dbo].Production
SELECT [field1]
     ,[field2]
     ,cast([datefield] as datetime)
FROM [RAW].Staging

暫存表載入了 CSV 文件中的數據。所以在某些情況下,我們最終得到的是空欄位,而不是 NULL 欄位。因此,當將日期欄位插入到生產表中時,日期欄位將轉換為 1900-01-01 日期。

我想知道在上面的插入程式碼期間是否可以做一些事情來確保如果欄位為 NULL 或來自 Staging 表時為空,則將 datefield 設置為 NULL。

除了加里的回答,我想出了以下幾點:

cast(NULLIF([expected_discharge_dttm],'') as datetime)

誰能預見此程式碼(或 Gary 對 CASE 的使用)的問題?

您可以使用 case 語句:

INSERT INTO [dbo].Production
SELECT [field1]
 ,[field2]
 ,CASE WHEN cast([datefield] as datetime) = '1900-01-01' THEN NULL ELSE cast([datefield] as datetime) END
FROM [RAW].Staging

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