TSQL中SSIS场景下字符串类型日期变量加减天数的实现问题
修复后可直接运行的代码
DECLARE @P_StartDate VARCHAR(100) DECLARE @P_EndDate VARCHAR(100) SET @P_StartDate = ? SET @P_EndDate = ? IF (@P_StartDate!='' AND @P_EndDate!='') BEGIN -- 日期计算后转回字符串,不需要额外定义日期类型变量 SET @P_StartDate = CONVERT(VARCHAR(100), DATEADD(day, -1, CONVERT(DATE, @P_StartDate, 102)), 102) SET @P_EndDate = CONVERT(VARCHAR(100), DATEADD(day, 1, CONVERT(DATE, @P_EndDate, 102)), 102) SELECT @P_StartDate , @P_EndDate END
原代码报错原因
- 缺少变量赋值必须的
SET关键字,直接写变量名赋值属于语法错误 DATEADD、CONVERT函数的右括号缺失,语法不合法- 多余的
MAX聚合函数:你传入的是单个日期字符串,不需要做聚合计算 - 未做日期转字符串处理:
DATEADD计算后返回的是日期类型,无法直接赋值给字符串类型变量,需要转回对应格式的字符串
补充说明
如果你存储的日期字符串格式不是yyyy.mm.dd(对应格式码102),可以自行替换CONVERT函数的第三个参数为你实际使用的格式码即可,比如常用的yyyy-mm-dd对应格式码120,mm/dd/yyyy对应格式码101。
内容的提问来源于stack exchange,提问作者insanity
相关产品推荐
相关产品推荐

