使用SSIS生成含日期时间的唯一CSV文件名求助
解决SSIS生成唯一CSV文件名的表达式问题
嘿,我来帮你搞定这个SSIS文件名的问题!你原来的表达式主要在类型转换语法和小时制设置上出了点小问题,我给你修正后的版本,还会拆解每个部分的作用,方便你理解和调整:
修正后的完整表达式
"C:\\TEMP\\SaturnExport\\Exported_" + RIGHT("0" + (DT_STR,2,1252)DATEPART("M", GETDATE()), 2) + RIGHT("0" + (DT_STR,2,1252)DATEPART("DD", GETDATE()), 2) + (DT_STR,4,1252)DATEPART("YYYY", GETDATE()) + "_" + RIGHT("0" + (DT_STR,2,1252)DATEPART("Hour", GETDATE()), 2) + "_" + RIGHT("0" + (DT_STR,2,1252)DATEPART("MI", GETDATE()), 2) + "_" + RIGHT("0" + (DT_STR,2,1252)DATEPART("SS", GETDATE()), 2) + ".CSV"
关键问题说明 & 表达式拆解
修复类型转换语法
你原来的写法(DT_STR,4,1252) DATEPART(...)是错误的——类型转换需要直接包裹住DATEPART的返回值,正确格式是(DT_STR,长度,编码)DATEPART(...)。比如月份是两位数,所以用(DT_STR,2,1252),年份是四位数用(DT_STR,4,1252)。确保24小时制小时数
原表达式用DATEPART("HH", GETDATE())会返回12小时制的数值(比如下午2点会得到02而不是14),改用DATEPART("Hour", GETDATE())就能获取24小时制的小时数,符合你示例里14的需求。补零处理两位数格式
RIGHT("0" + ..., 2)的作用是确保月份、日期、时分秒都是两位数:比如1月会变成01,9分钟会变成09,避免出现Exported_992020_2_5.csv这种不规整的文件名。
效果验证
这个表达式会生成你想要的格式,比如当前时间是2020年9月9日14点25分30秒,输出的文件名就是:Exported_09092020_14_25_30.CSV
内容的提问来源于stack exchange,提问作者Hamzah Amir
相关产品推荐
相关产品推荐

