PostgreSQL 11 spring JPA 查询错误 java.sql.Date 对象和 TO_DATE 函数格式为 YYYY-DD-MM

PostgreSQL 11 spring JPA query error with java.sql.Date object and TO_DATE fucntion with format YYYY-DD-MM

我正在将 java.sql.Date 对象传递给 CrudRepository 本机查询。此日期对象被传递给格式为 ('YYYY-DD-MM') 的日期函数。此查询适用于 PostgreSQL 9.4,但当数据库为 PostgreSQL 11 时会出错。我尝试了 JDBC 驱动程序 v42.2.11 和 9.1-901-1。两者都给出相同的结果。

错误信息是:

ERROR: date/time field value out of range: "2020-05-27 +00:00" 

代码:

@Query(value = "SELECT TO_DATE(?1, 'YYYY-DD-MM')", nativeQuery = true)
public String sampleQuery(java.sql.Date date);

当我将日期格式设置为 "SELECT TO_DATE(?1, 'YYYY-MM-DD')" 时,它在 PostgreSQL 11 中有效。

知道这里发生了什么。

因为 27 不是有效的月份,所以它不应该工作:

postgres=# select version();
                                                 version                                                 
---------------------------------------------------------------------------------------------------------
 PostgreSQL 11.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)

postgres=# select to_date('2020-05-27 +00:00','YYYY-DD-MM');
ERROR:  date/time field value out of range: "2020-05-27 +00:00"
postgres=# 

如果它在 9.4 中工作,它会给出意想不到的结果:

postgres=# select version();
                                                    version                                                     
----------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.4.26 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)

postgres=# select to_date('2020-05-27 +00:00','YYYY-DD-MM');
  to_date   
------------
 2022-03-09
(1 row)

postgres=#