【问题标题】:How do I get a Month from LocalDate in JPQL query?如何在 JPQL 查询中从 LocalDate 获取月份?
【发布时间】:2023-03-27 01:05:02
【问题描述】:

我收到了一个带有LocalDate 作为created 属性的交易:

private LocalDate created;

我还得到了以下查询,以从我的表 transaction 中检索每个日期。

SELECT DISTINCT t.created FROM Transaction t

然而,这只是给了我所有日期,我将这些日期映射到找到的所有月份。

public List<Month> findAllUsesdMonth() {
  return getEm().createNamedQuery(Transaction.FIND_ALL_MONTH, LocalDate.class).getResultList().stream().map(LocalDate::getMonth)
        .collect(Collectors.toList());
}

这显然会导致重复月份,因为我选择了不同的日期而不是不同的月份。一种解决方法是使用 Set 而不是 List。

我想只检索 JPQL 查询中的月份,而不是之后映射它们。有没有可能这样做?

【问题讨论】:

  • @Saveen 谢谢!在提交之前,我应该更清楚地阅读我的问题。 ://
  • 您可以在问题中添加日期格式(保存在数据库中)吗?

标签: java-8 jpa-2.1


【解决方案1】:

日期格式:yyyy-MM-dd HH:mm:ss

查询:SELECT t FROM Transaction t GROUP BY (SUBSTRING(t.created, 6, 7))

通过调用此NamedQuery,您将获得不同的月份。

【讨论】:

  • 我将通过您的查询获得整个交易,而不是 LocalDate 的月份。
猜你喜欢
  • 2014-10-26
  • 2015-11-25
  • 1970-01-01
  • 2021-06-08
  • 2019-10-15
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多