【问题标题】:How to retrieve data from azure table storage between date and time如何在日期和时间之间从天蓝色表存储中检索数据
【发布时间】:2019-05-07 13:09:19
【问题描述】:

我正在尝试使用表中的 logdatetime 列从表存储中检索两个日期之间的数据,我最终得到了这个

{"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);

【问题讨论】:

  • 我认为查询是错误的,您应该使用 logdatetime ge datetime'2019-03-17T19:09:26.0000000Z' 和 logdatetime le datetime'2019-03-17T19:10:16.0000000Z'要获得这些日期时间之间的范围,日期时间不可能等于两个不同的日期时间
  • 这个过滤器有多少条记录?因为您的查询可能很慢
  • 谢谢你改成 ge/le 就可以了

标签: c# azure-table-storage azure-sdk-.net


【解决方案1】:

如果你想在两个日期时间之间得到结果,你应该在查询过滤器中使用运算符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'");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 2013-08-20
    • 2021-10-17
    • 2015-09-26
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多