【问题标题】:Date range storing in database日期范围存储在数据库中
【发布时间】:2015-04-09 01:49:49
【问题描述】:

我正在尝试使用 mongodb 将 daterange 值存储在数据库中,所以我使用了 String 返回类型,但我无法保存 daterange 。是否可以将日期范围直接保存在数据库中,或者我必须将日期范围拆分为开始日期和结束日期并存储在数据库中?前端是 AngularJS,后端是 mongoDB...

【问题讨论】:

  • 你能再解释一下你的问题吗?就像你尝试过的事情一样,例如您尝试存储的值和存储时遇到的确切错误??
  • 嗨 Viraj,我没有收到任何错误。我尝试了“私人字符串日期范围;”然后实体类中的getter和setter ...从ui中我将值传递为ng-model =“dateRange”。我无法保存在数据库中。我正在从日期范围选择器日历中选择日期范围。
  • 您是否尝试记录并检查是否在 java 类中收到日期..?你仍然听起来很抽象,看一些代码可能会更好,所以我们不会问这么多问题..

标签: java angularjs html mongodb


【解决方案1】:

MongoDB 不提供任何类型的 DateRange 数据类型。

Java8 提供Period 和Duration 类型。在 Java8 之前,有一个很棒的 Joda Time 库,它还提供 Period 和 Duration 数据类型。

Java 的 MongoDB 库没有针对这些类型的任何类型的转换器。它只知道java.util.Data。

不过,如果您想存储 Java8 或 Joda Period 或 Duration,您需要为 Java MongoDB 驱动程序编写客户数据类型转换器,或者直接在应用程序代码中进行转换。 (两者几乎相同)。

这样您可以在 MongoDB 中将日期范围保存为 { range: {from: ISODate("2015-01-01T00:00:00.000Z"), to: ISODate("2015-01-02T00:00:00.000Z") } }。

那么您当然必须对range.from 和range.to 字段进行查询。


当然,第二部分是,来自 HTML 日期范围选择器的值被正确序列化为字符串,并且可以被 Java 后端读取。

尽管确保(例如通过简单地使用 System.out.println(...) )数据已被 Java 正确反序列化。

如果一切正常,您可以使用 MongoDB,即将一个 DateRange 对象转换为两个 java.util.Date 对象,等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2017-05-31
    相关资源
    最近更新 更多