我有一个现有的JPA @查询,需要向WHERE添加一个附加条件,这样它将只返回当前日期与时间戳列匹配的行。基本上想知道这样的事情是否可能发生:
@Query("SELECT .. " +
"WHERE .. " +
"AND isCurrentDay(c.completedTs))"
否则,可以使用本机查询完成我所需的任务。
编辑:我的解决方案是使用本机查询,如下所示:
@Query(value = "SELECT ... " +
"WHERE ... " +
"AND CONVERT (date, c.completedTs) = CONVERT (date, GETDATE()))",
nativeQuery = true)
发布于 2022-04-11 18:06:46
使用您正在编写的语言的CURDATE
sql语句进行本机查询,这样做会更安全。例如,对于MySQL + JPA,它应该如下所示:
@Query("SELECT .. " +
"WHERE .. " +
"AND WHERE DATE(`completed_ts`)=CURDATE()",
nativeQuery = true)
发布于 2022-04-11 22:55:43
JPQL很少公开与当前日期/时间相关联的功能:
从医生那里:
CURRENT_DATE:此函数返回数据库服务器上当前日期的值。CURRENT_TIME:此函数返回数据库服务器上当前时间的值。CURRENT_TIMESTAMP:此函数返回数据库服务器上当前时间戳的值。
参考文献:javadoc
它们可以通过以下方式直接访问当前日期
@Query("SELECT .. " +
"WHERE .. " +
"AND c.completedTs=CURRENT_DATE )"
请注意,AFAIK,这些都是普通函数,不支持表达式,也就是说,您不能执行当前_DATE-1。
https://stackoverflow.com/questions/71832253
复制相似问题