我可以对Azure Cosmos中的DateTimeOffset序列化对象使用DateTimePart函数吗?

我正在尝试使用DateTimePart函数对我的Cosmos数据库执行查询:

SELECT c.callTime,c.id,c.source,DateTimePart('m',c.callTime) as month FROM c where c.ownerId='3467nm6df'

但是在该查询的结果中,“月”字段没有任何显示:

{
    "callTime": "2020-09-30T20:17:28+00:00","id": "352hyKL5agNtB4ic","source": "five9"
}

我的cosmos数据库中的文档结构如下:

public class CallIndex
{
    public string id;
    public DateTimeOffset callTime;
    public string source;
}

一些示例数据如下:

{
    "callTime": "2020-09-30T20:17:32+00:00","id": "352WMvL5agNwiU7u","source": "five9"
},{
    "callTime": "2020-09-30T20:17:28+00:00",{
    "callTime": "2020-09-30T20:16:51+00:00","id": "352iS3L5agN4yAog","source": "five9"
}

在进行一些研究时,我发现有关Azure Csosmos中对DateTimeOffset类型的支持的相互矛盾的信息。在某些文章中,有人指出Cosmos支持DateTimeOffset。在其他文章中,指出Cosmos不支持DateTimeOffset,而我应该使用DateTime

我们已经在使用DateTimeOffset的代码中走了很远。在我们尝试上述查询之前,它实际上已经正常运行。我们将所有内容都存储在UTC中,并且在代码中使用DateTimeOffset以便能够轻松转换为报表中的客户时区。所以我的问题是,函数2020-09-30T20:16:51+00:00是否支持格式DateTimePart(带偏移量的ISO DateTime)?还是DateTimePart仅适用于以下格式:2020-09-30T20:16:51.000000Z(ISO DateTime格式)?

如果后者为true,则我们需要将所有现有数据转换为ISO 8061 DateTime格式,而不是带偏移量的ISO 8061 DateTime格式。如果最终这样做,我如何告诉Newtonsoft如何将DateTimeOffset对象呈现为ISO 8061 DateTime(无偏移)?

qq975120043 回答:我可以对Azure Cosmos中的DateTimeOffset序列化对象使用DateTimePart函数吗?

是的。 Azure Cosmos DB中DateTime字符串的推荐格式为yyyy-MM-ddTHH:mm:ss.fffffffZ,该格式遵循ISO 8601 UTC标准。您上面显示的格式不适用于查询中的DateTime系统功能。

本文链接:https://www.f2er.com/1473702.html

大家都在问