Power Automate中OData查询日期格式错误排查求助
Power Automate中OData查询日期格式报错排查
原SQL查询需求
需要查询最近7天内金额≥10000美元的美国地区采购交易,原SQL语句如下:
SELECT column_name_1, column_name_2, column_name_3 FROM table_name WHERE CAST(Transaction_Date AS DATE) >= DATEADD(day, -7, CAST(GETDATE() AS DATE)) AND CAST(Amount_in_USD AS FLOAT) >= 10000 AND TYPE_OF_TRANSACTION = 'PURCHASE' AND Transaction_Country = 'US';
注:Transaction_Date列的数据格式为字符串类型的'2024-03-21'。
转换后的OData查询
转换后尝试使用的OData查询:
筛选查询
Transaction_Date ge datetime'2024-03-03T00:00:00Z' and Amount_in_USD ge 10000 and TYPE_OF_TRANSACTION eq 'PURCHASE' and Transaction_Country eq 'US'
选择查询
column_name_1, column_name_2, column_name_3
报错信息
运行时持续抛出如下错误:
Unrecognized 'Edm.String' literal 'datetime'2024-03-03T00:00:00Z'' at '31' in 'Transaction_Date ge datetime'2024-03-03T00:00:00Z' and Amount_in_USD ge 10000 and TYPE_OF_TRANSACTION eq 'PURCHASE' and Transaction_Country eq 'US''. inner exception: Unrecognized 'Edm.String' literal 'datetime'2024-03-03T00:00:00Z'' at '31' in 'Transaction_Date ge datetime'2024-03-03T00:00:00Z' and Amount_in_USD ge 10000 and TYPE_OF_TRANSACTION eq 'PURCHASE' and Transaction_Country eq 'US''. clientRequestId: dde40166-d0e8-4e45-b63e-7ee37afe38ba
问题原因及解决方案
问题原因
Transaction_Date是字符串类型(Edm.String),而非日期时间类型(Edm.DateTimeOffset/Edm.DateTime),OData无法识别针对字符串列使用datetime'...'格式的字面量,因此抛出语法错误。
解决方案
- 修正日期比较格式:直接使用与
Transaction_Date匹配的字符串日期格式(YYYY-MM-DD)进行比较,无需添加datetime前缀。 - 动态生成7天前日期:避免硬编码日期,使用Power Automate表达式自动计算最近7天的起始日期,确保查询的时效性。
修正后的完整筛选查询
Transaction_Date ge '@{formatDateTime(addDays(utcNow(), -7), 'yyyy-MM-dd')}' and Amount_in_USD ge 10000 and TYPE_OF_TRANSACTION eq 'PURCHASE' and Transaction_Country eq 'US'
选择查询保持不变
column_name_1, column_name_2, column_name_3
补充说明
formatDateTime(addDays(utcNow(), -7), 'yyyy-MM-dd'):该表达式会自动计算当前UTC时间往前推7天的日期,并格式化为YYYY-MM-DD的字符串,与Transaction_Date的格式完全匹配。- 若需使用本地时间而非UTC时间,可将
utcNow()替换为convertTimeZone(utcNow(), 'UTC', '你的时区ID')(例如'China Standard Time')。
内容的提问来源于stack exchange,提问作者Leo Liao
相关产品推荐
相关产品推荐

