将空字符串转换为空日期时间

pmd*_*dci 1 null sql-server t-sql cast datetime

考虑 Microsoft SQL Server 2012 中的以下代码:

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

临时表加载了来自 CSV 文件的数据。因此,在某些情况下,我们最终会得到空字段,而不是 NULL 字段。因此,日期字段在插入生产表时会转换为 1900-01-01 日期。

我想知道在上面的插入代码中是否有什么我可以做的,以确保当来自临时表的字段为 NULL 或为空时,日期字段设置为 NULL。

pmd*_*dci 7

除了加里的回答,我想出了以下内容:

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

任何人都可以预见此代码(或 Gary 对 CASE 的使用)的问题吗?