gpt4 book ai didi

java - 使用 Spring Data JPA 和 postgresql 在 @Query 中将字符串转换为时间戳

转载 作者:行者123 更新时间:2023-11-30 01:56:54 25 4
gpt4 key购买 nike

我想从 Postgresql 获取所选日期之前的所有记录。日期是字符串。在我看来,最简单的方法是使用 to_timestamp 将字符串转换为时间戳。

select * from workers where update_date < to_timestamp('2018-08-11', 'YYYY-MM-DD')::timestamp without time zone;

我在我的存储库中创建了如下方法,但它不起作用。

@Query("select w from Worker w where w.update_date < to_timestamp(:date, 'YYYY-MM-DD')::timestamp without time zone") 
List<Worker> findBeforeDate(@Param("date") String date);

它抛出

org.hibernate.hql.internal.ast.QuerySyntaxException:
unexpected token: : near line 1, column 104 [select w from com.oksa.workreport.doma.Worker w where w.update_date < to_timestamp(:date, 'YYYY-MM-DD')::timestamp without time zone]

谁能帮我解决这个问题吗?

最佳答案

您必须转义查询中的冒号。请尝试以下操作:

@Query(value = "select w from Worker w where w.update_date < to_timestamp(:date, 'YYYY-MM-DD')\\:\\:timestamp without time zone", nativeQuery=true) 
List<Worker> findBeforeDate(@Param("date") String date);

关于java - 使用 Spring Data JPA 和 postgresql 在 @Query 中将字符串转换为时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54144789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com