【发布时间】:2026-01-09 17:05:02
【问题描述】:
有没有可以直接在表达式生成器中获取月份名称的表达式?
我应该动态添加带有文件名的月份名称。我目前正在使用“DATEPART”函数,我从中收到月份编号,但我想要月份名称。谁能帮帮我?
【问题讨论】:
-
根据documentation,列表中没有一个但缺少的一些功能。您可以使用脚本任务来格式化值并将结果存储到变量中
有没有可以直接在表达式生成器中获取月份名称的表达式?
我应该动态添加带有文件名的月份名称。我目前正在使用“DATEPART”函数,我从中收到月份编号,但我想要月份名称。谁能帮帮我?
【问题讨论】:
不 - 很遗憾不是。你有两个选择:
(MONTH(yourDate) == 1 ? "January" : MONTH(yourDate) == 2 ? "February" :MONTH(yourDate) == 3 ? "March" : etc etc)
【讨论】:
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 等)
【讨论】: