在 documentdb 中存储日期时间值的最佳方法是什么?

What is the best way to store datetime value in documentdb?

  1. 是否有在 documentdb 中存储日期时间值的最佳方法?
  2. 显然,我将以 UTC 和 ISO 8601 格式存储此信息。这有什么问题吗?
  3. 我应该能够基于此日期时间值进行查询,例如 startDateTime < currentValue 和 currentValue <= endDateTime 等。我应该怎么做才能在这些类型的查询等方面获得最佳性能

在您的情况下,您没有提到的唯一真正的关键是您在 ISO-8601 字符串上具有完全精度 (-1) 的范围索引。

其他一些一般准则:

  • 以规范形式存储所有事件:2016-07-18T01:23:45.678Z

  • 在 zulu/GMT 时间内存储所有内容。每个字符串都以 Z 结尾。永远不要用 +03:00 存储它。确保在 运行 使用该输入查询之前将用户输入的本地时间转换为祖鲁时间。

  • 我还建议您根据自己的情况使用最粗粒度。因此,如果您指的是 2016 年 3 月的整个月份,只需存储 2016-03,而不要存储 -01T00:00:00.000Z。这主要适用于您在 运行 查询时使用的文字。假设事件以规范形式存储,那么 2016-07 < 2016-07-18T01:23:45.678Z 为真。此建议主要是为了用户的利益,但不会导致任何性能下降,并且在某些情况下可能会有非常小的改进。