在MongoDB中存储出生日期的最佳方法是什么?

Dre*_*rew 7 datetime date utc mongodb

我已经阅读了很多关于如何在MongoDB中存储简单日期(没有时间)的内容,但我仍然找不到答案.有人说存储主题像MongoDate(日期+ utc时间),有人说存储主题像YYYYMMDD字符串,有些像其他有趣的方式.最正式的方式似乎是MongoDate,但为什么我应该将出生日期存储为UTC时间的日期?

另外,出生日期"1990-05-21"存储为"1990-05-20T23:00:00Z"(前一天):此日期不应根据时区而改变,但在世界范围内保持不变.

我仍然想知道为什么MongoDB不像其他所有数据库那样提供简单的"日期"类型.

And*_*ruk 1

正如评论中提到的,它几乎取决于您的最终目标。我建议您使用 MongoDate,因为它是 MongoDB 中日期的本机格式,并且对于其他开发人员来说会保持直观。原生类型支持一系列开箱即用的有用方法,例如,您可以在 Map-Reduce 作业中使用这些方法。

另外,出生日期“1990-05-21”存储为“1990-05-20T23:00:00Z”(前一天)

我认为发生这种情况只是因为您服务器上的时区是 UTC+1。您可以在保存到数据库之前手动将时区设置为 UTC,这将解决您的问题。

  • 你所说的“这取决于你的最终目标”是什么意思?我的目标是保存出生日期并用它进行任何类型的查询(就像所有其他值一样)。为了节省时间和出生日期,这听起来有点奇怪。我的身份证上除了出生日期之外没有任何时间。所有那些根本不需要时间的价值观都会发生这种情况。在保存之前将UTC设置为零,意味着将时间设置为午夜,而不是“null”。这对我来说是无稽之谈。 (2认同)