我在ETL过程中工作,在表varchar中有一列,数据为28JUN1952
。 这将始终采用此格式,即日期为2位数字,月份为3个字母,年份为4位数字。ETL中的数据转换SSIS
我能够将它转换成日期列,我需要这个来yyyyMMdd
格式,即变成19520628
。我可以将月份和日期分开,但如果月份是1位数字,则无法在本月添加填充。 Jan
或Feb
。
是否有任何其他方式来转换数据格式或任何其他替代方法来添加填充?
我只需要在SSIS中进行转换。
我在ETL过程中工作,在表varchar中有一列,数据为28JUN1952
。 这将始终采用此格式,即日期为2位数字,月份为3个字母,年份为4位数字。ETL中的数据转换SSIS
我能够将它转换成日期列,我需要这个来yyyyMMdd
格式,即变成19520628
。我可以将月份和日期分开,但如果月份是1位数字,则无法在本月添加填充。 Jan
或Feb
。
是否有任何其他方式来转换数据格式或任何其他替代方法来添加填充?
我只需要在SSIS中进行转换。
,最快的途径是增加一个脚本转换。
内部脚本任务
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;
}
}
太棒了。万分感谢。 – 2012-07-24 08:08:04
试试这个:
declare @d varchar(20)='28JAN1952';
SELECT replace(CONVERT(date,RIGHT(@d,4)+SUBSTRING(@d,3,3)+LEFT(@d,2)),'-','')
我无法在那里添加SQL命令。我需要一些SSIS转换。 – 2012-07-24 06:10:41
你能后你有这么远的公式? – 2012-07-24 07:09:25