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