如何将SSIS日期变量转换为字符串以获取两位月份值
解决SSIS自定义日期变量提取两位月份的方案
问题根因说明
- DATEPART("mm",日期)返回的是数值类型,1-9月返回结果为1-9,直接转换为字符串不会自动补前导零
- 你遇到10月返回"1"的异常,大概率是DATEPART参数拼写错误:SSIS中
"m"是分钟的参数标识,"mm"才是月份的参数标识,注意不要少写一个m
正确两位月份提取表达式
直接使用以下表达式即可适配所有月份场景,不需要依赖GETDATE(),完全兼容你从数据库查询得到的@[User::SelectedDate]变量:
RIGHT("0" + (DT_STR,2,1252)DATEPART("mm", @[User::SelectedDate]), 2)
表达式逻辑说明
- 用
DATEPART("mm", @[User::SelectedDate])提取到数值格式的月份 - 转换为2位长度的字符串类型
- 左侧拼接字符串
"0",此时1-9月会得到"01"`"09"`,10-12月会得到`"010"`"012" - 取右侧两位,最终得到标准化的两位月份字符串
扩展场景:拼接四位年份+两位月份(如202110)
如果需要同时获取年月拼接结果,可以直接使用以下表达式:
(DT_STR,4,1252)DATEPART("yyyy", @[User::SelectedDate]) + RIGHT("0" + (DT_STR,2,1252)DATEPART("mm", @[User::SelectedDate]), 2)
内容的提问来源于stack exchange,提问作者Incompetent77
相关产品推荐
相关产品推荐

