使用日期字符串作为参数的 sql 查询不起作用

Posted

技术标签:

【中文标题】使用日期字符串作为参数的 sql 查询不起作用【英文标题】:sql query with string of a date as parameter doesn't work 【发布时间】:2021-12-14 11:49:35 【问题描述】:

我正在尝试使用 jpa 编写查询,但我不能。 我试过了:

@Query(value="select count(id_ass) from assenza where id_dip=?1 and data_ass between ?2 and ?3", nativeQuery = true)
Integer getAssenzeByid_dipmese(int id_dip,String inizio, String fine);

但我得到ERROR: operator does not exist: date >= character varying

然后我尝试使用

 @Query(value="select count(id_ass) from assenza where id_dip=?1 and data_ass >= ?2 and  data_ass<= ?3", nativeQuery = true)
Integer getAssenzeByid_dipmese(int id_dip,String inizio, String fine);

但我得到同样的错误

然后我尝试转换日期中的字符串,但没有成功... 有人可以告诉我我做错了什么吗?谢谢

【问题讨论】:

哪种格式有 inizio 和 fine 。 mysql要2021-10-29 格式是2021-10-29,需要在字符串末尾加'-'吗? 但我得到错误:运算符不存在:日期>=字符变化这不是 MySQL 错误消息。检查您的 DBMS。 我也怀疑mysql是这里的问题,不,你不需要添加单引号 【参考方案1】:

由于变量是字符串,它们作为 varchars 传递。 您必须将 varchars 显式转换为日期。

@Query(value="select count(id_ass) from assenza where id_dip=?1 and data_ass between CAST(?2 AS DATE) and CAST(?3 AS DATE)", nativeQuery = true)
Integer getAssenzeByid_dipmese(int id_dip,String inizio, String fine);

【讨论】:

抱歉刚刚看到答案,谢谢

以上是关于使用日期字符串作为参数的 sql 查询不起作用的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询不起作用 - 使用 Where 条件不匹配

与当前日期比较时,通过多个元键查询帖子不起作用

spark sql日期间隔sql查询不起作用

oracle中用dblink查询,有时候使用where中的字符串参数不起作用

使用多个参数(字符串、日期时间)的路由不起作用

SQL / MS Access - 为啥这个 CASE 不起作用?