我正在尝试将 SSIS 中格式为 2023-01-02T00:00 的 varchar 日期转换为 DT_DBTIMESTAMP。目前,我在派生列转换中使用以下表达式:
(DT_DBTIMESTAMP)(SUBSTRING([start_at], 1, 4) + "-" + SUBSTRING([start_at], 6, 2) + "-" + SUBSTRING([start_at], 9, 2) + " " + SUBSTRING([start_at], 12, 5) + ":00")
这种方法运行正常,但遇到 NULL 值时会失败。为了处理 NULL,我尝试修改表达式,如下所示:
ISNULL([start_at]) ? NULL(DT_DBTIMESTAMP) : (DT_DBTIMESTAMP)(SUBSTRING([start_at], 1, 4) + "-" + SUBSTRING([start_at], 6, 2) + "-" + SUBSTRING([start_at], 9, 2) + " " + SUBSTRING([start_at], 12, 5) + ":00")
但是,此表达式未按预期工作。对于在此转换中处理 NULL 值,有什么建议吗?
我个人建议使用
dbtimestamp2
,它映射到datetime2
。将字符串转换为 会容易得多;T
用空格替换 ,然后添加秒数:DateString
在这种情况下,如果您的列包含(W)STR
以该样式格式化的日期yyyy-MM-ddThh:mm
。也不需要
NULL
明确处理这些值,因为NULL
将导致NULL
,如下面的数据查看器屏幕截图所示: