我正在尝试使用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(无偏移)?