如何解决无法查询表存储中的DateTime列
我已经从Logic App中使用formatDateTime()将一列插入表存储中,并且输入正确的值,并且在查看记录时列类型显示为DateTime:
但是,当我尝试在此字段上查询时,它默认为字符串,即使将其更改为DateTime时也不会返回结果。
我没有尝试在formatDateTime()中使用任何格式,标准格式和自定义格式,但没有任何方法可以带回结果。关于我所缺少的任何想法吗?
解决方法
根据一些测试,该值仍为“ 字符串”类型,而不是“ DateTime ”类型。此document向我们展示了方法formatDateTime()
响应字符串中的值。
因此,当我们从方法formatDateTime()
插入值时,它将在存储表中插入一个字符串。似乎azure门户的显示中有一个错误,它显示类型为“ DateTime ”。但是,如果我们在“ Azure Storage Explorer ”中打开表存储,但不在Azure门户上打开,则可以在“ String ”中找到新插入的记录TimeOfCreation
”类型。
为此要求,很难在逻辑应用程序中获取“ DateTime ”类型的值并将其插入表存储中。我们可以只插入一个字符串。但是在将新记录插入表存储之后,我们可以编辑类型。我们可以在Azure门户或“ Azure Storage Explorer ”中进行操作。如果在Azure门户上执行此操作,只需单击“ 编辑”记录,然后单击“ 更新”按钮而不执行任何操作(因为该类型已经显示为“ DateTime”)。如果在“ Azure Storage Explorer ”中执行此操作,只需将类型从“ 字符串”更改为“ DateTime ”,然后单击“ 更新”即可。 ”。之后,我们可以通过“ TimeOfCreation”> =最近365天成功查询记录。
不好的是,我们可以只对每个插入的记录进行手动操作。我们无法在逻辑应用程序中解决此问题,也无法批量更新类型(在门户网站或资源管理器中)。如果要批量更新类型,则可以通过此api查询所有新插入的记录(使用$ filter过滤时间戳)。然后获取每个记录的PartitionKey
和RowKey
,并循环它们。使用此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/inserting-and-updating-entities
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。