如何从日期和时间之间的 azure table 存储中检索数据
How to retrieve data from azure table storage between date and time
我正在尝试使用 table 中的 logdatetime 列从 table 存储中检索 2 个日期之间的数据,我最终得到了这个
{"Result":[],"Id":11,"Exception":null,"Status":5,"IsCanceled":false,"IsCompleted":true,"IsCompletedSuccessfully":true,"CreationOptions":0,"AsyncState":null,"IsFaulted":false}
而不是这 2 天之间的数据。仅供参考,id 硬编码,从日期时间到日期时间。
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
string partitionFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "partitionkey");
string finalFilter = TableQuery.CombineFilters(
TableQuery.CombineFilters(partitionFilter, TableOperators.And, "logdatetime eq datetime'2019-03-17T19:09:26.0000000Z'"), TableOperators.And, "logdatetime eq datetime'2019-03-17T19:10:16.0000000Z'");
var query = new TableQuery<TelemetryData>().Where(finalFilter);
CloudTable table = tableClient.GetTableReference("TableName");
var result = table.EndExecuteQuerySegmented(query,null);
如果您想获得两个日期时间之间的结果,您应该在查询过滤器中使用运算符 le / ge
。
所以你应该把下面代码中的运算符eq
分别改成le or ge
:
string finalFilter = TableQuery.CombineFilters(
TableQuery.CombineFilters(partitionFilter, TableOperators.And, "logdatetime ge datetime'2019-03-17T19:09:26.0000000Z'"), TableOperators.And, "logdatetime le datetime'2019-03-17T19:10:16.0000000Z'");
我正在尝试使用 table 中的 logdatetime 列从 table 存储中检索 2 个日期之间的数据,我最终得到了这个
{"Result":[],"Id":11,"Exception":null,"Status":5,"IsCanceled":false,"IsCompleted":true,"IsCompletedSuccessfully":true,"CreationOptions":0,"AsyncState":null,"IsFaulted":false}
而不是这 2 天之间的数据。仅供参考,id 硬编码,从日期时间到日期时间。
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
string partitionFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "partitionkey");
string finalFilter = TableQuery.CombineFilters(
TableQuery.CombineFilters(partitionFilter, TableOperators.And, "logdatetime eq datetime'2019-03-17T19:09:26.0000000Z'"), TableOperators.And, "logdatetime eq datetime'2019-03-17T19:10:16.0000000Z'");
var query = new TableQuery<TelemetryData>().Where(finalFilter);
CloudTable table = tableClient.GetTableReference("TableName");
var result = table.EndExecuteQuerySegmented(query,null);
如果您想获得两个日期时间之间的结果,您应该在查询过滤器中使用运算符 le / ge
。
所以你应该把下面代码中的运算符eq
分别改成le or ge
:
string finalFilter = TableQuery.CombineFilters(
TableQuery.CombineFilters(partitionFilter, TableOperators.And, "logdatetime ge datetime'2019-03-17T19:09:26.0000000Z'"), TableOperators.And, "logdatetime le datetime'2019-03-17T19:10:16.0000000Z'");