微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过Logic App将值作为DateTime放入Azure表中

如何解决如何通过Logic App将值作为DateTime放入Azure表中

我有一个逻辑应用程序,应该将数据存储在Azure表中。一切正常,直到我意识到应该存储为DateTime的属性之一存储为String。

问题在于其他一些应用程序正在定期对表中的数据进行查询,并且希望在该位置找到DateTimes:

var query = new TableQuery<UserEntity>().Where(
    TableQuery.CombineFilters(
            TableQuery.GenerateFilterConditionForDate(
                nameof(UserEntity.AccessEndTime),QueryComparisons.GreaterThanorEqual,DateTime.SpecifyKind(queriedDate,DateTimeKind.Utc)),TableOperators.And,TableQuery.GenerateFilterConditionForDate(
                nameof(UserEntity.AccessEndTime),QueryComparisons.Lessthan,DateTime.SpecifyKind(queriedDate.AddDays(1),DateTimeKind.Utc))));

基本上,我的C#应用​​正在寻找将AccessEndTime属性值设置为特定日期的用户

不幸的是,由于Logic App将值写为字符串,因此我的查询未返回任何数据。

这是我的逻辑应用程序的一部分:

enter image description here

首先,我创建一个带有正确数据作为JSON的object,然后使用插入或替换实体块,该块使用该JSON的Body作为要放入表中的实体。如您所见,AccessEndTime一个type: string。我尝试使用type: datetime,但是它失败并显示错误(没有这种类型)。

我想我可以在客户端上处理它,但是然后我的UserEntity必须将AccessEndTime作为String,这感觉并不对。

我想念什么?

//编辑 我还发现了this。我试图像这样放置数据:

enter image description here

因此,我明确添加属性的类型。不幸的是,结果仍然相同。

解决方法

以相同的方式查看此SO问题的答案:Cannot query a DateTime column in Table Storage

根据文档,您似乎可以使用formatDateTime(),但这将无法按以下说明进行操作:

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

enter image description here

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

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

enter image description here

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。