当前位置: 首页 > 知识库问答 >
问题:

Spring Data JPA查找最近日期

郗唯
2023-03-14

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

我正在使用Spring Data JPA,但我似乎不知道该怎么做。根据可用的函数,似乎没有任何本身可用的东西来查找最接近的日期。目前,我想到的最好的主意是使用原始sql,类似于

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

然后,我会在我的存储库上有一个函数,例如

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

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

笔记

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

共有1个答案

叶书
2023-03-14

我认为您会发现,在任何众所周知的关系数据库中都找不到“最近”的日期。

然而,您可能能够做一些与当前类似的事情,但使用符合JPA的语法,而不是特定于数据库的语法。

有关一些想法,请参阅JPA中2个日期之间的天数计数。

 类似资料:
  • 任何C#/T-SQL大师可以帮助我吗?我有一个困难的时间试图将这个C#代码转换为T-SQL。 以下是C代码: 以下是实施方案: 这个想法是您有一个列表(C#端的DayOfWeekList),该列表可以填写一周中的任何一天。可能是星期一和星期二,可能是星期二、星期三、星期五和星期六,等等。 有一个传入的DateTime参数正在与该列表进行比较,并根据其在列表中最接近的工作日进行更新。 例如,如果传入

  • 最近设施分析是指在网络上给定一个事件点和一组设施点,为事件点查找以最小耗费能到达的一个或几个设施点,结果显示从事件点到设施点(或从设施点到事件点)的最佳路径,耗费,及行驶方向。例如事件发生点是一起交通事故,要求查找在10分钟内能到达的最近医院,超过10分钟能到达的都不予考虑。此例中,事故发生地即是一个事件点,周边的医院则是设施点。最近设施查找实际上也是一种路径分析,因此,同样可以应用障碍边和障碍点

  • 我正在做一个AlgoExpert挑战,我已经花时间自己解决它,看了关于它的视频讲座,我觉得我有一个很好的理解,但我在递归和树遍历方面的技能现在很低(这就是我工作的原因)。 这是提示 编写一个函数,该函数接受二进制搜索树(BST)和目标整数值,并返回与BST中包含的目标值最接近的值。每个BST节点都有一个整数值、一个左子节点和一个右子节点。其子节点本身是有效的BST节点或无/空 目标:12 这是我目

  • 问题内容: 我有一个日期对象列表和一个目标日期。我想在列表中找到最接近目标日期的日期,但仅找到目标日期之前的日期。 示例:2008-10-1 2008-10-2 2008-10-4 目标日期为2008-10-3,我想获得2008-10-2 最好的方法是什么? 问题答案: Sietse de Kaper解决方案采用了 反向 排序的列表,绝对不是最自然的解决方案 Java中的自然排序顺序遵循递增的自然

  • 问题内容: 我试图弄清楚如何编写一个MySQL查询,该查询将返回日期最近的3个事件。 这是我的桌子: 因此,查询结果应为ID的1,2,5,因为它们是与当前日期相比最接近的ID。 编辑: 查询应该只找到将来的事件。 问题答案: 这意味着1天前的事件与将来1天的事件一样接近。如果您只想要尚未发生的事件,请执行

  • 问题内容: 我正在寻找一种借助Elasticsearch查找最近价格/数量的可能性。问题是我没有范围。我要实现的是,结果按最近距离排序。根据示例搜索查询,我的索引包含3个具有以下价格(数字)的文档:45、27、32 给定数字与我的搜索值29的“距离”为45-29 = 16 | 27-29 = -2 | 32-29 = 3,所以我希望搜索结果是按“距离”评分的,该数字距离给定价格不远。 搜索查询示例