我有以下数据:
12APR19 0644
,我想在SSIS中对它们进行合并/转换,使它们在我的最终目的地显示为:
2019-04-12 06:44:00.00
我尝试使用(DT_DBTIMESTAMP) [DateColumn] [TimeColumn]
,但这给了我一个一般性的错误。有人帮忙吗?
答案 0 :(得分:1)
首先将您的字符串转换为dd mmm yyyy hh:mm,然后使用大小写类型dt_date:
(DT_DATE)"12 APR 2019 06:44"
返回:
2019/4/12 6:44:00
您可以进一步转换以获得所需的格式。 OTOH如果您的目标是SQL Server数据库,则可以执行以下操作:
(DT_WSTR, 20)(DT_DBTIMESTAMP)"12 APR 2019 06:44"
产生
2019-04-12 06:44:00
答案 1 :(得分:0)
您可以摆脱一个stuff()
示例
Select AsDateTime = try_convert(datetime,stuff('12APR19 0644',11,0,':'))
返回
AsDateTime
2019-04-12 06:44:00.000
答案 2 :(得分:0)
假设列名称为DateColumn
,则可以使用具有以下表达式的派生列:
"20" + SUBSTRING([DateColumn],6,2) + "-" +
(SUBSTRING( [DateColumn],3,3) == "JAN" ? "01" :
SUBSTRING( [DateColumn],3,3) == "FEB" ? "02" :
SUBSTRING( [DateColumn],3,3) == "MAR" ? "03" :
SUBSTRING( [DateColumn],3,3) == "APR" ? "04" :
SUBSTRING( [DateColumn],3,3) == "MAY" ? "05" :
SUBSTRING( [DateColumn],3,3) == "JUN" ? "06" :
SUBSTRING( [DateColumn],3,3) == "JUL" ? "07" :
SUBSTRING( [DateColumn],3,3) == "AUG" ? "08" :
SUBSTRING( [DateColumn],3,3) == "SEP" ? "09" :
SUBSTRING( [DateColumn],3,3) == "OCT" ? "10" :
SUBSTRING( [DateColumn],3,3) == "NOV" ? "11" :
SUBSTRING( [DateColumn],3,3) == "DEC"? "12":"")
+ "-" SUBSTRING([DateColumn],1,2) + " " + SUBSTRING([DateColumn],9,2) + ":" + SUBSTRING([DateColumn],11,2) + "00.00"
输入
12APR19 0644
结果
2019-04-19 06:00:00.00
请注意,如果输出列数据类型为date,则需要将上面的表达式转换为(DT_DATE)
或(DT_DBTIMESTAMP)
您可以添加脚本组件,并使用以下代码行转换此列(假设输入列为DateColumn
,输出列为OutDateColumn
) >
Row.OutDateColumn = DateTime.ParseExact(Row.DateColumn,"ddMMMyy HH:mm",System.Globalization.CultureInfo.InvariantCulture);
如果输出为字符串列,则使用以下代码:
Row.OutDateColumn = DateTime.ParseExact(Row.DateColumn,"ddMMMyy HH:mm",System.Globalization.CultureInfo.InvariantCulture).ToString("yyyy-MM-dd HH:mm:ss.ff);;