从Flatfile转换SSIS日期/数字

时间:2017-11-06 14:44:59

标签: sql-server datetime ssis etl derived-column

我有一个包含2列的Flat文件。一个是这种格式的日期时间

2017-11-06T11:16:08 AM GMT

以此格式存储的另一列总值

£39.00

目的地是OLEDB(ms sql),

Column 1 is Datetime and column 2 is Int in the destination 

SSIS使用派生列进行数据转换不会返回第1列(日期)所需的输出

PS:无法更改目标数据类型

enter image description here

FlatFileSample Data

派生专栏:

第2列使用子字符串

返回值
(DT_STR,50,1252)SUBSTRING(Total,3,20) 

第1列(orderDate)需要替换T和Am / Pm值,输出应该是

2017-11-06 11:17:40   from 2017-11-06T11:16:08 AM GMT

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用以下表达式来实现此目的:

SUBSTRING([Order date],1,10) + " " 
+ (FINDSTRING([Order date],"AM", 1 ) > 0 ? SUBSTRING([Order date],12,2)  : SUBSTRING([Order date],12,2)  == "12" ? "00" : (DT_WSTR, 2 )((DT_I4)SUBSTRING([Order date],12,2) + 12))
+ SUBSTRING([Order date],14,6)