如何从Logic App将值作为DateTime放入Azure表中
我有一个逻辑应用程序,应该在Azure表中存储数据。一切都很顺利,直到我意识到我的一个应该存储为DateTime的属性被存储为String 问题在于,其他一些应用程序定期对表中的数据进行查询,并希望在表中找到日期时间:如何从Logic App将值作为DateTime放入Azure表中,azure,azure-logic-apps,azure-table-storage,Azure,Azure Logic Apps,Azure Table Storage,我有一个逻辑应用程序,应该在Azure表中存储数据。一切都很顺利,直到我意识到我的一个应该存储为DateTime的属性被存储为String 问题在于,其他一些应用程序定期对表中的数据进行查询,并希望在表中找到日期时间: var query=new TableQuery()。其中( TableQuery.CombineFilters( TableQuery.GenerateFilterConditionForDate( 名称(UserEntity.AccessEndTime), 查询比较。大于或等
var query=new TableQuery()。其中(
TableQuery.CombineFilters(
TableQuery.GenerateFilterConditionForDate(
名称(UserEntity.AccessEndTime),
查询比较。大于或等于,
DateTime.SpecifyKind(queryeddate,DateTimeKind.Utc)),
表3.以及,
TableQuery.GenerateFilterConditionForDate(
名称(UserEntity.AccessEndTime),
QueryComparisons.LessThan,
DateTime.SpecifyKind(queryeddate.AddDays(1),DateTimeKind.Utc));
基本上,我的C#应用程序正在寻找将其AccessEndTime
属性值设置为某一特定日期的用户
不幸的是,由于Logic应用程序将值写入字符串,因此我的查询不会返回任何数据
以下是我的逻辑应用程序的一部分:
首先,我创建了一个对象
,并将适当的数据作为JSON,然后使用Insert或Replace Entity块,该块使用该JSON的Body
作为要放入表中的实体。如您所见,AccessEndTime
有一个类型:string
。我尝试使用type:datetime
,但是失败了,出现了一个错误(没有这样的类型)
我想我可以在客户端处理它,但是我的UserEntity
必须将AccessEndTime
作为String
来处理,这感觉不太对劲
我错过了什么
//编辑
我也发现了。我试图将我的数据如下所示:
因此,我明确地添加了我的属性的类型。不幸的是,结果仍然是一样的。请查看这个问题的答案,大致相同: 根据文档,您似乎可以使用
formatDateTime()
,但这将无法按如下所述工作:
根据一些测试,值仍然是字符串类型,但不是日期时间类型。这向我们展示了方法formatDateTime()
响应字符串中的值
因此,当我们从方法formatDateTime()
插入值时,它将向存储表中插入一个字符串。azure门户的显示中似乎有一个bug,它显示类型为“DateTime”。但是,如果我们在“Azure存储资源管理器”中打开表存储,而不是在Azure门户上打开,我们可以发现新插入记录的创建时间是字符串类型
对于这个需求,很难在logic app中获取“DateTime”类型的值并将其插入表存储中。我们可以插入一个字符串。但我们可以在将新记录插入表存储后编辑类型。我们可以在Azure门户网站或“Azure存储资源管理器”中执行此操作。如果在Azure portal上执行此操作,只需单击“编辑”记录并单击“更新”按钮而不执行任何操作(因为类型已显示为“日期时间”)。如果在“Azure存储资源管理器”中执行此操作,只需将类型从“字符串”更改为“日期时间”,然后单击“更新”。之后,我们可以通过“创建时间”>=最后365天成功来查询记录
这里的缺点是,我们可以在每个插入的记录上手动执行。我们无法在logic app或批量更新类型(在门户或资源管理器中)中解决此问题。如果要批量更新类型,可以通过此查询所有新插入的记录(使用$filter筛选时间戳)。然后获取每条记录的PartitionKey
和RowKey
,并循环它们。使用此选项可更新列TimeOfCreation类型