【问题标题】:Spring Data JPA query records by hour minute only without secsSpring Data JPA 仅按小时分钟查询记录,无需秒
【发布时间】:2020-10-17 20:55:56
【问题描述】:
我们可以在 mysql 中只按小时分钟查询记录,而不需要秒,如下 where 条件:
DATE_FORMAT(ecs.scheduler_date, '%Y-%m-%d %H:%i') = DATE_FORMAT('2020-10-17 16:12:15', '%Y-%m-%d %H:%i')
但是如何在 Spring Data JPA 中编写呢?
【问题讨论】:
-
您可以在您的自定义休眠方言中声明DATE_FORMAT 函数,然后在您的 jpql/hql 中使用它。参见例如this。
标签:
spring-boot
hibernate
jpa
spring-data-jpa
【解决方案1】:
在存储库中以下面指定的方式将其作为自定义查询传递
@Query(value="SELECT DATE_FORMAT(datetime,'%y-%m-%d %H:%i') as Day
FROM table1 GROUP BY DATE_FORMAT(datetime,'%y-%m-%d %H:%i')",nativeQuery = true)
List<Entity_class_name> methodname();
如果需要在同一个查询中传递特定值,那么您可以像 ?1.. 一样在查询中替换它们而不是变量,并且在 methodname() 内部将值作为参数传递。下面的例子
@Query(value="select * from ?1 where name=?2",nativeQuery=true)
List method(tablename, name);