【问题标题】:Any way to save Date type as local time in MongoDB?有什么方法可以将日期类型保存为 MongoDB 中的本地时间?
【发布时间】:2021-03-02 18:54:55
【问题描述】:

似乎 Mongo DB 中的所有日期类型都保存为 UTC 时间。无论如何从MongoDB服务器端配置我可以更改默认日期类型以显示为本地时间?例如,在数据库上显示/保存为 CTC 时间?谢谢,

【问题讨论】:

  • 我只是将所有内容保存为 UTC,然后在将其放入我网站上的报告或表面数据时将其转换为本地时间。您可以在加载时对其进行转换 - 我在 Python 中有一个模块可以执行此操作...您如何将数据加载到 mongo?
  • 数据由Java开发人员加载为当地时间,一旦进入数据库,自动保存为UTC时间。我正在运行一个报告,需要将其过滤为当地时间,如何仅使用 Mongo DB 查询进行转换?例如我想检索过去 5 天的数据,我可以使用聚合函数 $match: { "CreateDate": { $gte: new Date(new Date().setDate(new Date().getDate()-5 )), $lte: 新日期()}}}。但是显示的是UTC时间,我认为时间范围也是UTC吧?
  • 您的日期对象应如下所示:2020-11-22T20:07:32.600+00:00 和 +00:00 是使它成为 UTC 的原因。如果日期以当地时间输入,则类似于 -08:00 (PT)。如果 javascript 将数据收集为本地数据,但没有以 ISO 日期格式调整 TZ,那么您实际上有一个不同的问题(抱歉),应该首先解决。我的理解,Mongo 不会为你转换 TZ,它只是输入它被告知的内容......
  • 不支持。 MongoDB 服务器仅在 UTC 中运行。
  • 您使用new Date() 的查询是否返回正确的结果?

标签: mongodb mongodb-query


【解决方案1】:

MongoDB 将日期时间存储为自纪元以来的毫秒数。没有时区信息与数据一起存储。

数据库返回的值类似于1614847506286

如何显示完全取决于应用程序。

【讨论】:

  • 如果我只运行 mongodb 查询来创建报告而不使用任何其他代码,如何在运行查询时将 UTC 时间转换为本地时间,以及如何将 UTC 时间转换为我的本地时间结果集?
  • 如果您将 MongoDB 中的值存储为日期/时间类型,则在运行查询时无需转换。 (即自纪元以来的毫秒数不依赖于时区)。结果集还将包含作为整数的日期,选择时区并将该整数转换为日期字符串取决于客户端。
猜你喜欢
  • 2017-08-01
  • 2014-02-03
  • 2022-01-12
  • 2020-05-21
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
相关资源
最近更新 更多