SSIS中为DATETIME类型项目参数添加一天并存储到DATETIME变量时表达式报错的解决求助
解决SSIS表达式中DATEADD函数的"day"识别错误问题
嗨,我一眼就看出你这是踩了SSIS表达式语法的小坑啦!咱们来快速搞定这个问题:
问题出在哪?
SSIS里的DATEADD函数对第一个参数(也就是你要加的时间间隔类型)有严格要求:它必须是用双引号包裹的字符串常量。你直接写了day没加引号,表达式解析器就把它当成了一个未定义的变量,自然就报错说“无法识别token'day'”啦。另外你表达式里(DT_DBDATE)和@[$Project::Start_Date]之间还多了个空格,这也是语法上的小问题哦。
修正后的表达式
先把day加上双引号,再去掉类型转换和变量之间的空格,直接用这个表达式就可以了:
DATEADD("day", 1, @[$Project::Start_Date])
如果你确实需要先把项目参数转成DT_DBDATE(去掉时间部分)再转成DT_DATE,那完整的正确表达式是:
DATEADD("day", 1, (DT_DATE)(DT_DBDATE)@[$Project::Start_Date])
额外验证提示
- 确认你的项目参数
Start_Date和目标变量的类型都是DATETIME或者DATE,保持类型一致避免额外错误 - SSIS表达式里的字符串必须用双引号,单引号是不生效的哦
- 所有类型转换操作和变量/常量之间不要留空格,不然解析器也会懵圈
内容的提问来源于stack exchange,提问作者insanity
相关产品推荐
相关产品推荐

