【发布时间】:2021-06-09 22:00:34
【问题描述】:
我正在接收 MMddyyyy 格式的日期,但想将其转换为 SQL/SSIS yyyy-MM-dd 中的日期格式,我该如何使用 SSIS 表达式。
我收到的日期示例是03051978,但希望它出现在1978-03-05。
谢谢
【问题讨论】:
标签: sql-server date ssis etl data-conversion
我正在接收 MMddyyyy 格式的日期,但想将其转换为 SQL/SSIS yyyy-MM-dd 中的日期格式,我该如何使用 SSIS 表达式。
我收到的日期示例是03051978,但希望它出现在1978-03-05。
谢谢
【问题讨论】:
标签: sql-server date ssis etl data-conversion
您可以使用以下表达式:
(DT_DATE)(RIGHT("0000" + RIGHT("03051978",4),4) + "-" + RIGHT("00" + LEFT("03051978",2),2) + "-" + RIGHT("00" + SUBSTRING("03051978",3,2),2))
以列名替换"03051978"为例:
(DT_DATE)(RIGHT("0000" + RIGHT([DateColumn],4),4) + "-" + RIGHT("00" + LEFT([DateColumn],2),2) + "-" + RIGHT("00" + SUBSTRING([DateColumn],3,2),2))
SSIS 表达式测试工具的屏幕截图
【讨论】:
这是您的 SSIS 表达式。显然,这里的假设是日和月部分总是两位数:
(DT_DBDATE)(SUBSTRING(col,5,4) + "-" + SUBSTRING(col,1,2) + "-" + SUBSTRING(col,3,2))
【讨论】:
我会使用脚本组件。
DateTime.ParseExact([datecol],"MMddyyyy", System.Globalization.CultureInfo.InvariantCulture);
【讨论】: