【发布时间】: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