我正在尝试使用DateTimePart函数对我的Cosmos数据库执行查询:
SELECT c.callTime,c.id,c.source,DateTimePart('m', c.callTime) as month FROM c where c.ownerId='3467nm6df'但是在我的查询结果中,我在'month‘字段中什么也没有得到:
{
"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",
"id": "352hyKL5agNtB4ic",
"source": "five9"
},
{
"callTime": "2020-09-30T20:16:51+00:00",
"id": "352iS3L5agN4yAog",
"source": "five9"
}在做一些研究时,我发现了关于Azure Csosmos中对DateTimeOffset类型的支持的相互矛盾的信息。在一些文章中,指出Cosmos支持DateTimeOffset。在其他文章中,指出Cosmos不支持DateTimeOffset,我应该使用DateTime。
我们已经在代码中使用DateTimeOffset的道路上走了很远。在我们尝试上面的查询之前,它实际上工作得很好。我们将一切存储在协调世界时,并且我们在代码中使用DateTimeOffset,以便能够在报告中轻松转换为客户端时区。所以我的问题是,函数DateTimePart是否支持2020-09-30T20:16:51+00:00 (带偏移量的ISO DateTime )格式?或者DateTimePart只适用于这样的格式:2020-09-30T20:16:51.000000Z (ISO DateTime format)?
如果是后者,那么我们将需要将所有现有数据转换为ISO8061 DateTime格式,而不是带有偏移量的ISO8061 DateTime格式。如果我们最终这样做了,我如何告诉Newtonsoft如何将DateTimeOffset对象呈现为ISO8061 DateTime (没有偏移量)?
发布于 2020-10-01 05:22:46
是。Azure Cosmos DB中的DateTime字符串的推荐格式是yyyy-MM-ddTHH:mm:ss.fffffffZ,它遵循ISO 8601 UTC标准。上面显示的格式将不适用于查询中的DateTime系统函数。
https://stackoverflow.com/questions/64145812
复制相似问题