Sql server ETL SSIS中的数据转换
我在ETL过程中工作,在varchar表中有一列,数据为1952年6月28日。 这将始终采用这种格式,即2位数字表示日期,3个字母表示月份,4个数字表示年份 我能够将其转换为日期列,因为我需要它采用Sql server ETL SSIS中的数据转换,sql-server,ssis,etl,Sql Server,Ssis,Etl,我在ETL过程中工作,在varchar表中有一列,数据为1952年6月28日。 这将始终采用这种格式,即2位数字表示日期,3个字母表示月份,4个数字表示年份 我能够将其转换为日期列,因为我需要它采用yyyyMMdd格式,即1952年6月28日变成19520628。我可以拆分年、月和日期,但如果月份是1位数的月份,则无法在月份中添加填充,例如Jan或Feb 是否有其他方法转换数据格式或添加填充的其他替代方法 我只需要在SSIS中进行转换。尝试以下操作: declare @d varchar(20)
yyyyMMdd
格式,即1952年6月28日
变成19520628
。我可以拆分年、月和日期,但如果月份是1位数的月份,则无法在月份中添加填充,例如Jan
或Feb
是否有其他方法转换数据格式或添加填充的其他替代方法
我只需要在SSIS中进行转换。尝试以下操作:
declare @d varchar(20)='28JAN1952';
SELECT replace(CONVERT(date,RIGHT(@d,4)+SUBSTRING(@d,3,3)+LEFT(@d,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;
}
}
我无法在那里添加SQL命令。我需要一些SSIS转换。你能发布你到目前为止的公式吗?