spring 数据 oracle - 发现非数字字符
spring data oracle - non-numeric character was found
我有 table disponibility
与此列。
我创建了以下查询
@Query(nativeQuery = true, value = "select count(*) from disponibility d WHERE d.fk_room = ?1 "
+ "AND ((d.starthour < ?2 AND ?2 < d.endhour) OR (d.starthour < ?3 AND ?3 < d.endhour)) "
+ "AND ((d.startdate < TO_DATE(?4, 'dd/MM/yyyy') AND TO_DATE(?4, 'dd/MM/yyyy') < d.enddate) OR (d.startdate < TO_DATE(?5, 'dd/MM/yyyy') AND TO_DATE(?5, 'dd/MM/yyyy') < d.enddate))")
int checkUnicityRoom(String roomId, int startHour, int endHour, Date startDate, Date endDate);
return这个错误
ORA-01858: a non-numeric character was found where a numeric was expected
您输入的 日期 值实际上不是日期。看演示:
这没问题:
SQL> select to_date('15/02/2021', 'dd/mm/yyyy') today from dual;
TODAY
----------------
15.02.2021 00:00
但这不是(注意 ab
在月份的位置):
SQL> select to_date('15/ab/2021', 'dd/mm/yyyy') today from dual;
select to_date('15/ab/2021', 'dd/mm/yyyy') today from dual
*
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected
SQL>
我不知道您使用了哪些值,但是 - 检查您传递给 TO_DATE
函数的内容。
正如您所说,您使用的值是 Wed Apr 11 01:00:00 CET 2018
,它显然不同于您与 TO_DATE
函数一起使用的 dd/MM/yyyy
格式掩码。这两个必须匹配.
你的情况:
SQL> select to_timestamp_tz('Wed Apr 11 01:00:00 CET 2018', 'Dy Mon dd hh24:mi:ss TZR yyyy') datum
2 from dual;
DATUM
---------------------------------------------------------------------------
11.04.18 01:00:00,000000000 CET
SQL>
因为 table 列的数据类型是 DATE
你应该
SQL> select cast(to_timestamp_tz('Wed Apr 11 01:00:00 CET 2018', 'Dy Mon dd hh24:mi:ss TZR yyyy') as date) datum
2 from dual;
DATUM
----------------
11.04.2018 01:00
SQL>
我有 table disponibility
与此列。
我创建了以下查询
@Query(nativeQuery = true, value = "select count(*) from disponibility d WHERE d.fk_room = ?1 "
+ "AND ((d.starthour < ?2 AND ?2 < d.endhour) OR (d.starthour < ?3 AND ?3 < d.endhour)) "
+ "AND ((d.startdate < TO_DATE(?4, 'dd/MM/yyyy') AND TO_DATE(?4, 'dd/MM/yyyy') < d.enddate) OR (d.startdate < TO_DATE(?5, 'dd/MM/yyyy') AND TO_DATE(?5, 'dd/MM/yyyy') < d.enddate))")
int checkUnicityRoom(String roomId, int startHour, int endHour, Date startDate, Date endDate);
return这个错误
ORA-01858: a non-numeric character was found where a numeric was expected
您输入的 日期 值实际上不是日期。看演示:
这没问题:
SQL> select to_date('15/02/2021', 'dd/mm/yyyy') today from dual;
TODAY
----------------
15.02.2021 00:00
但这不是(注意 ab
在月份的位置):
SQL> select to_date('15/ab/2021', 'dd/mm/yyyy') today from dual;
select to_date('15/ab/2021', 'dd/mm/yyyy') today from dual
*
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected
SQL>
我不知道您使用了哪些值,但是 - 检查您传递给 TO_DATE
函数的内容。
正如您所说,您使用的值是 Wed Apr 11 01:00:00 CET 2018
,它显然不同于您与 TO_DATE
函数一起使用的 dd/MM/yyyy
格式掩码。这两个必须匹配.
你的情况:
SQL> select to_timestamp_tz('Wed Apr 11 01:00:00 CET 2018', 'Dy Mon dd hh24:mi:ss TZR yyyy') datum
2 from dual;
DATUM
---------------------------------------------------------------------------
11.04.18 01:00:00,000000000 CET
SQL>
因为 table 列的数据类型是 DATE
你应该
SQL> select cast(to_timestamp_tz('Wed Apr 11 01:00:00 CET 2018', 'Dy Mon dd hh24:mi:ss TZR yyyy') as date) datum
2 from dual;
DATUM
----------------
11.04.2018 01:00
SQL>