【问题标题】:Adding month name to file in ssis将月份名称添加到 ssis 中的文件
【发布时间】:2026-01-09 17:05:02
【问题描述】:

有没有可以直接在表达式生成器中获取月份名称的表达式?

我应该动态添加带有文件名的月份名称。我目前正在使用“DATEPART”函数,我从中收到月份编号,但我想要月份名称。谁能帮帮我?

【问题讨论】:

  • 根据documentation,列表中没有一个但缺少的一些功能。您可以使用脚本任务来格式化值并将结果存储到变量中

标签: date ssis


【解决方案1】:

不 - 很遗憾不是。你有两个选择:

  1. 从 SQL 中返回月份名称作为数据集的一部分或
  2. 做一个疯狂的表情:

(MONTH(yourDate) == 1 ? "January" : MONTH(yourDate) == 2 ? "February" :MONTH(yourDate) == 3 ? "March" : etc etc)

【讨论】:

  • 好吧!我试过使用这个表达式,它给了我月份的名字! :)
【解决方案2】:

SSIS 表达式的功能非常有限。如果我没记错的话,它提供了早在 VBScript 中可用的功能。即使在 2016 年 according to the documentation 也没有字符串格式化功能,人们最终会连接字符串的各个部分。

您可以使用脚本步骤使用 String.Format 格式化日期并将结果存储在变量中,如 [在脚本任务中使用变量] (https://msdn.microsoft.com/en-us/library/ms135941.aspx) 和 this SO question 中所示,例如:

var targetFolder=Dts.Variables["User::targetFolder"].Value;
var filePrefix=Dts.Variables["User::filePrefix"].Value;
var someDate=Dts.Variables["User::myDate"].Value;

var filePath= = String.Format(CultureInfo.InvariantCulture,"{0}_{1:MMMM}.txt",filePrefix,someDate);
var fullPath=Path.Combine(targetFolder,filePath);

Dts.Variables["User::filePath"].Value=fullPath;

脚本任务的优点是您可以使用 .NET 的所有函数来格式化值(例如 String.Format)和操作路径(例如 Path.Combine、Path.GetFileNameWithoutExtension 等)

【讨论】: