【问题标题】:Between two dates spring data jpa在两个日期之间弹簧数据 jpa
【发布时间】:2021-03-26 09:56:04
【问题描述】:

我需要使用 spring data jpa 选择两个日期之间的记录。 如果我使用 BETWEEN<=>= 它不起作用。 如果我使用两个日期,它不会给我任何记录,并且使用一个日期它工作得很好。

在我的项目中,我有多个表连接。这里我举个简单的例子。

SELECT emp FROM Employee emp WHERE emp.joiningDate between :startDate and :startDate2;

我的仓库方法是:

List<Employee> findEmps(@Param("startDate") Date startDate, @Param("startDate2") Date startDate2);
    
@Temporal(value=TemporalType.DATE)
@Column(name = "JOIN_DATE")
private Date joiningDate;
    
repo.findEmps(dateFormat.parse("2021-03-22"), dateFormat.parse("2021-03-26"));

但 is 没有给我 0 条记录。

但如果我正在使用:

SELECT emp FROM Employee emp WHERE emp.joiningDate >= :startDate;

我的仓库是:

List<Employee> findEmps(@Param("startDate") Date startDate);

然后它给我记录。我无法理解这种行为。

任何人都知道这一点,我做错了什么。

【问题讨论】:

  • 您的数据是什么样的? “加入”日期是否有可能小于2021-03-26 00:00? (请注意,如果没有给出时间,则假定为一天的开始)。
  • 数据库中的日期保存为“2101-MAR-26”
  • 它们实际上是日期而不是字符串吗? 2101-xxx 的值是否正确,即 2101 年?

标签: java hibernate spring-data-jpa


【解决方案1】:

如果你使用 Spring Data JPA,你可以使用 findByStartDateBetween 看看 reference documentation

【讨论】:

    猜你喜欢
    • 2017-02-08
    • 2019-07-16
    • 1970-01-01
    • 2020-04-17
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多