我正在导入一个日期列标有StartDate
的电子表格(01/01/2000)
我需要将其拆分为两列,一列是Month
,另一列是Year
。
Month
必须是月份名称(Jan,Feb等),另一个是简单的4位数年份。
我想通过SSIS包来做到这一点。
我曾尝试使用某些日期表达式创建派生列,但我无法按照我需要的方式工作。
有没有人对什么是正确的脚本有任何想法?
谢谢。
答案 0 :(得分:1)
我假设StartDate具有Date-ish数据类型,并且不已作为字符串导入(DT_STR或DT_WSTR)。
将派生列添加到数据流中。给它命名,比如StartMonth,并使用像MONTH([StartDate])
这样的表达式。
添加第二个派生列,将其命名为StartYear并使用类似YEAR([StartDate])
的表达式
由于我无法阅读,你要求提供月份名称。这有点丑陋,因为没有内置的表达式功能。
您可以使用Ternary Operatior (test) ? true : false
编写自己的,但这种方法的局限在于表达式编辑器对于长表达式来说很麻烦。
([StartMonth]==1)?"January":([StartMonth]==2)? "February" : ([StartMonth]==3)? "March" : "Etc"
另一种方法是使用脚本任务。在“行”选项卡中,选中我们的StartDate
列作为只读输入。在Output中,添加一个名为StartMonthName的新列,类型为String length 3(如果您只想要3个字母的缩写)。如果您已经在使用脚本任务,则可以通过从此处添加StartMonth
来消除派生列调用。
Row.StartMonthName = Row.StartDate.ToString("MMM");
Row.StartMonth = Row.StartDate.Month;