ADF增量加载MySQL数据时to_timestamp格式错误求助
修正ADF增量加载中MySQL时间格式不匹配的问题
问题根源
你的SQL查询存在两个关键问题:
- MySQL函数使用错误:MySQL中没有
to_timestamp函数,需使用标准的STR_TO_DATE函数将字符串转换为日期时间类型。 - 格式字符串不匹配:存储的时间格式为
2022-09-22T21:02:38.000+0000,但你使用的格式符yyyy-MM-ddTHH:mm:ss.fffZ无法匹配末尾的+0000时区标识。
修正后的SQL查询
select * from dbo.mfgoperationdata where lastUpdate > STR_TO_DATE('@{activity('MaxDate').output.firstRow.Prop_0}', '%Y-%m-%dT%H:%i:%s.%f%z');
格式符说明
使用的MySQL格式符对应存储的时间结构:
%Y:4位年份(如2022)%m:2位月份(如09)%d:2位日期(如22)%H:24小时制小时(如21)%i:分钟(如02)%s:秒(如38)%f:微秒(如000)%z:时区偏移(如+0000)
替代方案:ADF表达式预转换时间格式
如果更倾向于在ADF中处理格式转换,可以使用formatDateTime函数将读取到的时间字符串转为MySQL兼容的格式,再传入查询:
select * from dbo.mfgoperationdata where lastUpdate > '@{formatDateTime(activity('MaxDate').output.firstRow.Prop_0, 'yyyy-MM-dd HH:mm:ss.fff')}';
该方案需确保lastUpdate字段的时区与转换后的UTC时间一致,避免数据遗漏或重复。
内容的提问来源于stack exchange,提问作者sayan nandi
相关产品推荐
相关产品推荐

