如何解决ADF中动态使用当前日期变量时的日期转换错误?
解决Azure Data Factory中SQL日期转换错误问题
问题根源
你的SQL查询里,在CAST函数中错误地给currentdate变量套了方括号,导致生成的SQL语句中日期字符串变成了'[YYYY-MM-DD]'格式,SQL Server无法将带方括号的字符串转换为DATE类型,进而触发SqlErrorNumber=241的转换失败错误。
修正后的SQL查询表达式
@concat(' SELECT * FROM [',variables('schema'),'].[',if(variables('custom_table_list_flag'),item(),item().name),'] WHERE UPDATE_DATE > DATEADD(DAY,-1,CAST(''',variables('currentdate'),''' AS DATE)) AND UPDATE_DATE <= CAST(''',variables('currentdate'),''' AS DATE);')
关键修改说明
- 移除了
CAST内多余的''[''和'']''片段,直接将currentdate变量值作为纯日期字符串传入,生成的SQL会是CAST('2024-05-20' AS DATE)这类合法格式。 - 确认
currentdate变量的默认值是SQL Server可识别的日期格式(如yyyy-MM-dd),若变量格式不符,需同步调整变量默认值表达式(例如用utcnow('yyyy-MM-dd')生成标准格式)。
验证建议
可先在ADF调试模式下查看生成的完整SQL语句,确认日期部分格式正确后,再执行复制数据活动,避免因格式问题重复报错。
内容的提问来源于stack exchange,提问作者TANMAY SETHI
相关产品推荐
相关产品推荐

