【问题标题】:Azure Cosmos DB Date Query as string not workingAzure Cosmos DB 日期查询作为字符串不起作用
【发布时间】:2022-03-03 15:38:39
【问题描述】:

基本上它只是基于机器 id 和日期时间在 azure cosmos db 中查询获取操作。 我真的坚持基于日期时间在 cosmos 中进行查询。我能够运行相同的查询并在 azure 门户上获得结果。但是在代码方面我没有得到结果。

更多细节:

SELECT *
FROM c
WHERE c.IoTHub.ConnectionDeviceId IN ('hub20') AND c.MACHINE_ID = 'TAP_20' AND (c.EventEnqueuedUtcTime >= '2021-02-03T10:40:42.5180000Z' AND c.EventEnqueuedUtcTime <= '2021-02-03T10:40:42.5180000Z')
QueryDefinition queryDefinition = new QueryDefinition(sqlQueryText);
FeedIterator<dynamic> queryResultSetIterator = container.GetItemQueryIterator<dynamic>(queryDefinition);
FeedResponse<dynamic> currentResultSet;
while (queryResultSetIterator.HasMoreResults)
{
    currentResultSet = await queryResultSetIterator.ReadNextAsync();
}     

我可以在 MACHINE_ID 之前获取所有数据,但只要我应用 c.EventEnqueuedUtcTime 条件。我无法获取数据。我尝试了所有可能的 solution.c.EventEnqueuedUtcTime 值,我们将其作为字符串获取,并且在数据库中它被保存为字符串,如图所示。

{
    "MESSAGE_GROUP_ID": "24c9e3ad-4fd6-4abb-88d8-eafb9060884e",
    "TYPE": "Gauges",
    "MACHINE_ID": "TAP_20",
    "Gauges": {
        "OVERRIDE": 85.8
    },
    "EventProcessedUtcTime": "2021-02-03T10:41:48.0493615Z",
    "PartitionId": 3,
    "EventEnqueuedUtcTime": "2021-02-03T10:40:42.5180000Z",
    "IoTHub": {
        "MessageId": "498b7df3-55e6-4b3f-a18e-698fd991e526",
        "CorrelationId": null,
        "ConnectionDeviceId": "hub20",
        "ConnectionDeviceGenerationId": "637332663098221999",
        "EnqueuedTime": "2021-02-03T10:41:11.2570000Z"
    },
    "id": "498b7df3-55e6-4b3f-a18e-698fd991e526"
}

任何线索将不胜感激。 谢谢

【问题讨论】:

  • 我注意到两件事:1)查询中的 From 和 to 日期/时间值相同,因此您正在寻找 EventEnqueuedUtcTime 值等于 2021-02-03T10:40:42.5180000Z 和 2)的记录在数据屏幕截图中,数据库中的值超出了您要搜索的日期/时间值。
  • 1.是的,你说得对,我现在正在寻找一个价值。 2.第二点不清楚,你说的数据库在外面是什么意思。EventEnqueuedUtcTime 我要找的是保存为日期时间的默认格式为字符串。
  • 请编辑您的问题,为您的文档示例添加格式正确的文本,而不是文本图像。这个meta post 列出了为什么这非常重要的许多原因。
  • 我已经编辑了问题并添加了文本。我不确定为什么它不工作,但是如果查询到机器,只要我包含 EventEnqueuedUtcTime,我的查询就可以正常工作,它不会给出结果。意味着我的计数变为 0 实际上我应该得到 1 个结果。
  • 查询中的值为2021-02-03T10:40:42.5180000Z,但数据库中的值为2021-02-03T10:41:11.3190000Z

标签: c# datetime azure-cosmosdb azure-cosmosdb-sqlapi


【解决方案1】:

感谢user2911592 分享解决步骤。将它们作为答案发布以帮助其他社区成员。

最初使用强制转换错误地保存了查询/代码。定影 同样解决了这个问题。

user2911592:请随时添加更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2022-06-25
    相关资源
    最近更新 更多