Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Logic App将值作为DateTime放入Azure表中_Azure_Azure Logic Apps_Azure Table Storage - Fatal编程技术网

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

如何从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), 查询比较。大于或等

我有一个逻辑应用程序,应该在Azure表中存储数据。一切都很顺利,直到我意识到我的一个应该存储为DateTime的属性被存储为String

问题在于,其他一些应用程序定期对表中的数据进行查询,并希望在表中找到日期时间:

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类型