Azure Data Factory管道表达式构建器:日期格式转换报错求助
错误原因排查与解决
核心问题1:日期时间字符串不符合ISO 8601格式
输入的WindowStart值2022-12-23:18:00:000Z存在格式错误:
- ISO 8601标准要求日期和时间部分必须用
T分隔,而非冒号 - 毫秒部分应该用小数点
.分隔,而非冒号
正确的ISO 8601格式应为2022-12-23T18:00:00.000Z
核心问题2:表达式中字段名大小写不匹配
你的表达式使用了小写的windowStart,但JSON返回的字段名是大写开头的WindowStart。Azure Data Factory对字段名大小写敏感,这会导致无法正确读取目标日期值,甚至可能传入空值或错误字符串给formatDateTime函数。
修复方案
- 修正数据源的日期格式:确保
WindowStart返回符合ISO 8601标准的字符串,比如调整上游数据生成逻辑,输出2022-12-23T18:00:00.000Z格式的值。 - 修正表达式字段名:将表达式中的字段名改为与JSON一致的大小写:
formatDateTime(activity('Lookup1').output.firstRow.WindowStart,'dd-MM-yyyy hh:mm') - 临时兼容方案(若无法修改数据源):如果无法调整上游数据格式,可以先用
replace函数修正日期字符串格式,再传入formatDateTime:
注:这里的formatDateTime(replace(replace(activity('Lookup1').output.firstRow.WindowStart, ':', 'T', 1), ':', '.', 1),'dd-MM-yyyy hh:mm')replace函数第一个替换是将日期和时间之间的冒号换成T,第二个替换是将秒和毫秒之间的冒号换成小数点。
内容的提问来源于stack exchange,提问作者Dinesh
相关产品推荐
相关产品推荐

