SSIS日期表达式问题:获取前一天日期并格式化为DDMMYYYY
SSIS表达式:获取前一天日期并格式化为DDMMYYYY格式
你的问题出在原表达式仅对当前日期的天数做减1操作,没有处理跨月、跨年的日期逻辑——比如每月第一天减1天需要切换到上月最后一天,1月1日减1天需要切换到上年12月31日,原表达式无法自动处理这些场景。
推荐两种解决方案:
方案1:兼容全SSIS版本的拼接写法
先通过DATEADD函数直接得到前一天的完整日期,再拆分日、月、年进行格式化拼接,彻底避免日期边界问题:
RIGHT("00" + (DT_WSTR, 2) DAY(DATEADD("day", -1, GETDATE())), 2) + RIGHT("00" + (DT_WSTR, 2) MONTH(DATEADD("day", -1, GETDATE())), 2) + (DT_WSTR, 4) YEAR(DATEADD("day", -1, GETDATE()))
当当前日期为2024年7月1日时,DATEADD("day", -1, GETDATE())会返回2024-06-30,后续拆分格式化后得到30062024,完全符合需求。
方案2:SSIS 2012+版本的简洁写法
如果你的SSIS环境基于SQL Server 2012及以上版本,可以直接使用FORMAT函数一步到位,代码更简洁易读:
FORMAT(DATEADD("day", -1, GETDATE()), "ddMMyyyy")
该函数会自动处理所有日期边界场景,直接输出指定格式的字符串。
内容的提问来源于stack exchange,提问作者Jan Dvořák
相关产品推荐
相关产品推荐

