Azure 找到操作数类型';Edm.DateTime';和';Edm.String';对于操作员类型';大于或等于';
尝试根据时间戳从Azure表中获取实体时出错,该时间戳的类型为Edm.DateTime:Azure 找到操作数类型';Edm.DateTime';和';Edm.String';对于操作员类型';大于或等于';,azure,datetime,odata,azure-table-storage,azure-tablequery,Azure,Datetime,Odata,Azure Table Storage,Azure Tablequery,尝试根据时间戳从Azure表中获取实体时出错,该时间戳的类型为Edm.DateTime: StorageError: A binary operator with incompatible types was detected. Found operand types 'Edm.DateTime' and 'Edm.String' for operator kind 'GreaterThanOrEqual' 代码: let res:IQueryPrePostAuthResponse[]=[]
StorageError: A binary operator with incompatible types was detected. Found operand types 'Edm.DateTime' and 'Edm.String' for operator kind 'GreaterThanOrEqual'
代码:
let res:IQueryPrePostAuthResponse[]=[];
let query=new TableQuery();
query=query.where('PartitionKey eq',searchQuery.user\u id);
const entGen=TableUtilities.entityGenerator;
const dateFrom=entGen.DateTime(新日期(searchQuery.Date_from));
const dateTo=entGen.DateTime(新日期(searchQuery.Date_to));
query=query.and(
“Timestamp>=”和Timestamp,当我在发送到query之前打印dateTo和dateFrom时
const entGen=TableUtilities.entityGenerator;
const dateFrom=entGen.DateTime(新日期(searchQuery.Date_from));
const dateTo=entGen.DateTime(新日期(searchQuery.Date_to));
console.log(dateFrom);
console.log(dateTo);
我在输出中得到了这个:-
经过多次调试后,我知道我发送dateFrom和dateTo的方式不正确。
正确的方法是dateFrom.\u和dateTo.\u。但是这应该在Azure表或OData查询中提到,但在那里没有提到。
根据Odata Docs查询比较运算符,比较运算符两侧的数据类型必须兼容。
这会造成混淆,因为即使两者的类型相同,也会出现错误。正确的代码如下:-
let res:IQueryPrePostAuthResponse[]=[];
let query=new TableQuery();
query=query.where('PartitionKey eq',searchQuery.user\u id);
const entGen=TableUtilities.entityGenerator;
const dateFrom=entGen.DateTime(新日期(searchQuery.Date_from));
const dateTo=entGen.DateTime(新日期(searchQuery.Date_to));
query=query.and(
'时间戳>=?和时间戳