SSIS使用SSIS表达式将mmddyyyy和mm dd yyyy格式的日期转换为日期格式

SSIS convert date in mddyyyy and mmddyyyy format to date format using SSIS expression

我在一个来源中收到 MMddyyyyMddyyyy 格式的日期,如果月份有 1-9 位数字,则月份为 1 位数字,如果月份在 10 之间-12 它的 2 位数字,我需要一个能够将它们转换为日期格式的 SSIS 表达式。

ex 205199412051994

两者来自同一来源,但很难使用相同的 SSIS 表达式进行转换

最简洁的方法是规范化输入格式,然后照常将其转换为您选择的格式的数据。为了规范化输入,即每个月的长度都相同,您可以使用以下表达式添加 Derived Column 转换:

RIGHT("0" + yourinputdate,8)

如果输入日期是整数而不是字符串,您可以这样做:

RIGHT("0" + (DT_STR,8,1252)(yourinputdate),8)

使用上述表达式12051994将保持不变,但2051994将转换为02051994。

从下游的这个转换中,您可以将字符串转换为您喜欢的格式,或者您可以在同一个转换中完成所有操作,尽管这会使表达式有点不可读。

您可以使用以下表达式将 MddyyyMMddyyyy 字符串转换为 DateTime 值:

(DT_DATE)(RIGHT("0000" + RIGHT(RIGHT("0" + [DateColumn],8),4),4) + 
"-" + RIGHT("00" + LEFT(RIGHT("0" + [DateColumn],8),2),2) + 
"-" + RIGHT("00" + SUBSTRING(RIGHT("0" + [DateColumn],8),3,2),2))