当前位置: 首页 > 面试题库 >

Java:将一个时间段添加到另一个日期的JPQL日期函数

戚令秋
2023-03-14
问题内容

SELECT x FROM SomeClass
WHERE x.dateAtt BETWEEN CURRENT_DATE AND (CURRENT_DATE + 1 MONTH)

在上面的JPQL语句中,SomeClass具有memebr dateAttr,它是a
java.util.Date并具有@Temporal(javax.persistence.TemporalType.DATE)注释。

我需要一种方法来做(CURRENT_DATE + 1 MONTH)一下-在当前状态下这显然是错误的-但找不到带有JPQL的date函数的文档。

谁能指出我指向 记录JPQL日期函数 的文档的方向(以及如何执行此特定查询)?


问题答案:

如果您的日期对象已经是+ 1个月,则可以执行以下操作:

public List findEmployees(Date endDate) {
  return entityManager.createQuery(
    "SELECT e from Employee e WHERE e.startDate BETWEEN ?1 AND ?2")
    .setParameter(1,new Date(), TemporalType.DATE)
    .setParameter(2,endDate, TemporalType.DATE).getResultList();
}

但是,这要求日期有效。

更新

如果您总是想下个月,可以使用JodaTime,它具有出色而便捷的API。然后,您可以像这样修改查询:

//Get next month
DateTime dt = new DateTime();
entityManager.createQuery(
"SELECT e from Employee e WHERE e.startDate BETWEEN ?1 AND ?2")
.setParameter(1,new Date(), TemporalType.DATE)
.setParameter(2,dt.plusMonths(1).toDate(), TemporalType.DATE).getResultList();


 类似资料:
  • 问题内容: 假设我有一个以下格式的日期:2010-12-11(年一日) 使用PHP,我想将日期增加一个月,并且我希望年份可以在必要时自动增加(即,从2012年12月到2013年1月增加)。 问候。 问题答案:

  • 我有个约会‘2019-05-08t 22:15:00-0400’。我想将这个日期与当前的日期和时间进行比较。如果上述日期和时间小于当前日期和时间,那么我必须做些什么。 我的代码是:- 但它返回 false 。

  • 问题内容: 法国说如何将时区中的当前时间(日期时间)转换为另一个时区?我在SO中环顾四周,但没有找到任何可以帮助我的帖子。我正在使用SQL Server 2008。 问题答案: 在这里检查

  • 我有两个输入字段fromDate和toDate(都是date)。我使用datepicker作为输入字段fromDate。toDate是只读的,并且依赖于fromDate。也就是说,toDate的日期是6+。例如,如果fromDate是11/30/2014,则toDate是12/6/2014。 我的jsp代码是 和js代码为: 谢谢

  • 问题内容: 我正在尝试使用IPython发送简单的邮件。我尚未设置任何仍然出现此错误的模型。该怎么办? 已尝试:第一步是添加到你的设置文件并安装(如果可能)。 错误已更改: 问题答案: 问题不在于Django设置,而在于传递给模型的日期。时区感知对象如下所示: 这是一个幼稚的对象: 因此,如果你将电子邮件日期传递到任何地方(并且最终到达某种模型),则只需使用Django的即可。如果不是,则可能是现

  • 问题内容: 我希望有人可以帮助我。 我想在数据库日期中增加一个月,但我想防止在最后一天的两个月中跳过两个月。 例如,我可能有: 2009年1月31日 我想得到 2009年2月28日 并不是 2009年3月2日 下一个日期是 2009年3月28日 2009年6月28日 等等。 oracle中是否已经有执行这种操作的功能? 编辑 是的 我想每个月将具有某些状态的所有记录复制到下一个(因此用户不必每月再