我有一个包含50列的源文件。其中一列为22-MAY-2017 02:31:15.00
,其中的值为22-05-2017 02:31:15.00
格式。现在,在将此源文件加载到最终目标表之前,我希望将其转换为格式datetime
,以便我可以使用该列的数据类型{{1}}。
如果列只包含月份值,我已经看到了将月份名称转换为月号的方法。
我不知道如何在我的情况下解决这个问题。任何解决方案?
答案 0 :(得分:2)
一个解决方案就是REPLACE。只需将“MAY”替换为“05”,您就可以从样本输入中获得所需的结果。
在一个表达式中嵌套12个REPLACE函数,您将处理每个可能的场景。
答案 1 :(得分:2)
使用脚本组件。在C#
:
DateTime.Parse("22-MAY-2017 02:31:15.00").ToString("dd-MM-yyyy HH:mm:ss.ff");
例如,如果您的输入列是MyDate,而Out put列是OutPutCol,那么:
OutPutCol = DateTime.Parse(Row.MyDate).ToString("dd-MM-yyyy HH:mm:ss.ff");
答案 2 :(得分:1)
如果您的目标列数据类型为Script COmponent
,那么您不希望重新格式化日期字符串。但是您希望将此字符串转换为日期值。
您可以在数据流任务中添加DT_DBTIMESTAMP
,其输出列的类型为TransDateTime
,并将Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Output0Buffer)
Row.OutDate = DateTime.ParseExact(Row.TransDateTime,"dd-MMM-yyyy HH:mm:ss.ff",New System.Globalization.CultureInfo("en-GB"))
End Sub
列标记为输入。并使用以下代码:(我使用VB.NET)
DT_STR
如果目标列的类型为字符串,则必须执行相同的步骤,但输出列的类型应为Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Output0Buffer)
Row.OutDate = DateTime.ParseExact(Row.TransDateTime,"dd-MMM-yyyy HH:mm:ss.ff",New System.Globalization.CultureInfo("en-GB")).ToString("dd-MM-yyyy HH:mm:ss.ff")
End Sub
,并且必须使用以下代码:
<ul class='custom-menu'>
<li data-action="first">First thing</li>
<li data-action="second">Second thing</li>
<li data-action="third">Third thing</li>
</ul>
$(".custom-menu ul:last").append('<li> hey test ...</li>');
//$(".custom-menu ul").append('<li> hey test ...</li>');
console.log($('.custom-menu').html());