无法查询表存储中的DateTime列

问题描述

我已经从Logic App中使用formatDateTime()将一列插入表存储中,并且输入正确的值,并且在查看记录时列类型显示为DateTime:

enter image description here

但是,当我尝试在此字段上查询时,它默认为字符串,即使将其更改为DateTime时也不会返回结果。

enter image description here

我没有尝试在formatDateTime()中使用任何格式,标准格式和自定义格式,但没有任何方法可以带回结果。关于我所缺少的任何想法吗?

解决方法

根据一些测试,该值仍为“ 字符串”类型,而不是“ DateTime ”类型。此document向我们展示了方法formatDateTime()响应字符串中的值。 enter image description here

因此,当我们从方法formatDateTime()插入值时,它将在存储表中插入一个字符串。似乎azure门户的显示中有一个错误,它显示类型为“ DateTime ”。但是,如果我们在“ Azure Storage Explorer ”中打开表存储,但不在Azure门户上打开,则可以在“ String ”中找到新插入的记录TimeOfCreation ”类型。 enter image description here

为此要求,很难在逻辑应用程序中获取“ DateTime ”类型的值并将其插入表存储中。我们可以只插入一个字符串。但是在将新记录插入表存储之后,我们可以编辑类型。我们可以在Azure门户或“ Azure Storage Explorer ”中进行操作。如果在Azure门户上执行此操作,只需单击“ 编辑”记录,然后单击“ 更新”按钮而不执行任何操作(因为该类型已经显示为“ DateTime”)。如果在“ Azure Storage Explorer ”中执行此操作,只需将类型从“ 字符串”更改为“ DateTime ”,然后单击“ 更新”即可。 ”。之后,我们可以通过“ TimeOfCreation”> =最近365天成功查询记录。

不好的是,我们可以只对每个插入的记录进行手动操作。我们无法在逻辑应用程序中解决此问题,也无法批量更新类型(在门户网站或资源管理器中)。如果要批量更新类型,则可以通过此api查询所有新插入的记录(使用$ filter过滤时间戳)。然后获取每个记录的PartitionKeyRowKey,并循环它们。使用此api更新列TimeOfCreation的类型。

,

要插入DateTime类型的日期,请使用odata.type属性(请参见下面的示例),它会起作用。

{  
   "Address":"Mountain View",   "Age":23,   "AmountDue":200.23,   "CustomerCode@odata.type":"Edm.Guid",   "CustomerCode":"c9da6455-213d-42c9-9a79-3e9149a57833",   "CustomerSince@odata.type":"Edm.DateTime",   "CustomerSince":"2008-07-10T00:00:00","IsActive":true,   "NumOfOrders@odata.type":"Edm.Int64",   "NumOfOrders":"255",   "PartitionKey":"mypartitionkey",   "RowKey":"myrowkey"  
}

参考:

https://docs.microsoft.com/en-us/rest/api/storageservices/understanding-the-table-service-data-model#property-types

https://docs.microsoft.com/en-us/rest/api/storageservices/inserting-and-updating-entities

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...