SSIS 中的 Varchar 到日期

问题描述 投票:0回答:1

我正在尝试将 2023-01-02T00:00 格式的 varchar 日期转换为 SSIS 中的 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 值有什么建议吗?

sql-server ssis
1个回答
0
投票

就个人而言,我建议使用

dbtimestamp2
,它映射到
datetime2
。将字符串转换为该字符串要容易得多;将
T
替换为空格,然后添加秒数:

(DT_DBTIMESTAMP2,0) (REPLACE("2023-01-02T00:00","T"," ") + ":00")

也无需处理

NULL
值,因为
NULL
将导致
NULL
,如下面的数据查看器屏幕截图所示:
Data Viewer showing DateString and DateValue columns converted approriately

© www.soinside.com 2019 - 2024. All rights reserved.