如何仅根据 JPQL 中的日期时间字段按日期进行分组
对于 mysql,我编写了一个查询,例如
SELECT * FROM mytable GROUP BY DATE(dateTimeField)
But i can't use the DATE()
function in JPQL。 有人知道如何解决这个问题吗?
For mysql I wrote a query like
SELECT * FROM mytable GROUP BY DATE(dateTimeField)
But i can't use the DATE()
function in JPQL.
Anyone have an idea how to resolve this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您在后台使用 Hibernate,您可以尝试:
使用自定义函数创建您自己的方言
在
persistence.xml
中注册您的方言在 JPQL 中使用您的函数。
If You use Hibernate under the hood you can try :
Create your own dialect with custom function
Register Your dialect in
persistence.xml
Use your function in JPQL.
对于 Hibernate:
建议 1:
使用
cast(dateTimeField as date)
。请参阅此处。建议2:
您可以尝试将
年
、月
和年
连接起来 HQL 表达式。看一下此测试用例的第360行。
但花点时间看看生成的 SQL,它可能(而且可能会)丑陋且缓慢。
For Hibernate:
Suggestion 1:
Use
cast(dateTimeField as date)
. See here.Suggestion 2:
You can try to concatenate
year
,month
andyear
HQL expressions.Take a look at line 360 of this testcase.
But take the time to see the generated SQL, it may (and probably will be) ugly and slow.
如果您使用 EclipseLink,则可以使用 JPQL 中的
FUNC()
函数来调用特定的数据库函数:If you are using EclipseLink you can use the
FUNC()
function in JPQL to call a specific database function:恐怕这超出了 JPQL 提供的范围。您将不得不求助于本机查询。
以下是 JPQL 中可用函数的列表:
I'm afraid that's beyond the scope of what JPQL offers. You will have to resort to native queries.
Here's the List of available functions in JPQL: