【问题标题】:Spring Data JPA Find Closest DateSpring Data JPA 查找最近的日期
【发布时间】:2021-08-07 17:44:00
【问题描述】:

我有一个存储里程碑(id、描述、日期)的表,给定一些事件日期,我想找到最接近该日期的里程碑。

我正在使用 Spring Data JPA,但我似乎不知道该怎么做。根据可用的functions,似乎没有任何本机可用于查找最近的日期。目前我想出的最好的想法是使用原始 sql 类似的东西

select id, description, date, date-'2021-05-18' as datediff from milestones order by datediff desc limit 1

然后我会在我的 repo 上有一个函数,比如

 @Query("select id, description, date, date - :eventDate as datediff from milestones order by datediff desc limit 1")
    List<Milestones> findClosest(Date eventDate );

我对这种方法的主要担忧是,我必须依靠 DBMS 特定的函数来执行日期差异并只选择第一个结果。由于这似乎是一个常见问题,我想知道是否有更好的与 DBMS 无关的替代方案可用。

注意事项

  • 最近日期可以在活动日期之前或之后
  • 我正在使用 postgres,但理想的解决方案应该适用于任何 DBMS

【问题讨论】:

    标签: java sql spring-boot spring-data-jpa


    【解决方案1】:

    我认为您会发现在任何著名的关系数据库中都没有找到“最近”日期的方法。

    但是,您可能能够执行与当前所做的类似的操作,但使用符合 JPA 的语法而不是特定于数据库的语法。

    请参阅Count number of days between 2 dates in JPA 了解一些想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 2018-06-04
      相关资源
      最近更新 更多