我正在ETL过程中工作,我在表varchar中有一个列,数据为28JUN1952
。
这将始终采用这种格式,即日期为2位,月份为3位,年份为4位。
我能够将此转换为日期列,我需要将其转换为yyyyMMdd
格式,即28JUN1952
成为19520628
。我能够将年份和日期分开,但如果月份为1个月,则无法在月份中添加填充。 Jan
或Feb
。
有没有其他方法可以转换数据格式或任何其他替代方法来添加填充?
我只需要在SSIS中进行转换。
答案 0 :(得分:2)
最简单的方法是添加脚本转换。
内部脚本任务
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
DateTime x = DateTime.MinDate;
if (DateTime.TryParse(Row.srcDate, out x))
{
Row.ccyymmdd = x.ToString("yyyyMMdd");
}
else
{
// Handle NULL values however you wish
// Assign "known bad value"
// Row.ccyymmdd = "99991231";
// Or set the null property to true (preferred)
Row.ccyymmdd_IsNull = true;
}
}
答案 1 :(得分:0)
试试这个:
declare @d varchar(20)='28JAN1952';
SELECT replace(CONVERT(date,RIGHT(@d,4)+SUBSTRING(@d,3,3)+LEFT(@d,2)),'-','')