我在dd.mm.yyyy格式的原始数据文件中有一个生日字段。 我需要用2015年替换年份,并在阅读时保持文件中的月份和日期相同。 目标列是日期时间格式。 我能够制定下面的表达式,但它不断引发一个我无法理解的错误。
"2015 -" + RIGHT("0" + (DT_STR,2,1252)DATEPART("mm",birthdate),2) + "-" + RIGHT("0" + (DT_STR,2,1252)DATEPART("dd",birthdate),2))
任何对此的见解都会有所帮助
答案 0 :(得分:1)
使用VS 2012,我使用值为“27.08.2014”的字符串变量testdate运行测试,然后在表达式任务中应用您的表达式,用@ [User :: testdate]替换birthdate。这导致以下错误
“无法评估表达式....尝试解析 表达......失败了。表达式可能包含无效的toke, 不完整的toke或无效的元素。它可能不是 格式良好,或者可能缺少必要元素的一部分,例如a 括号“。
如果您的原始数据文件是文本,那么它可能以字符串形式出现,而不是在datetime中格式化,即使它保留了dd.mm.yyyy格式。因此,如果您收到类似的错误,则需要将其视为字符串。请尝试以下表达式。
“2015-”+ SUBSTRING(生日,4,2)+“ - ”+ SUBSTRING(生日, 1,2)
代替“birthdate”,我在上面应用了我的@ [User :: testdate]变量(值为“27.08.2014”),并且返回以下评估值时工作正常。
2015年8月27日
然后,如果使用它来填充数据库表,则可以将该值转换为datetime。希望这有帮助。