【问题标题】:Parameter value [100] did not match expected type [java.time.LocalDateTime (n/a)]参数值 [100] 与预期类型不匹配 [java.time.LocalDateTime (n/a)]
【发布时间】:2019-10-22 20:55:08
【问题描述】:

我在一个查询中遇到了奇怪的问题

select * from sbill.act_sub_t where (act_sub_t.unsub_dt - 
act_sub_t.sub_dt) < 100;

使用此查询,我在 oracle sql 开发工具中得到结果,但遇到以下 java 问题。

 Parameter value [100] did not match expected type 
 [java.time.LocalDateTime (n/a)]

下面是java代码

  Query query1 = entityManager.createQuery("select * from ActSubT 
  where (ActSubT.unsub_dt - ActSubT.sub_dt) <:days").setParameter("days", 
   100);

【问题讨论】:

    标签: oracle hibernate jpa createquery


    【解决方案1】:

    你可以试试TO_DATE()

    select * from sbill.act_sub_t 
    where (TO_DATE(act_sub_t.unsub_dt, 'YYYY-MM-DD') - TO_DATE(act_sub_t.sub_dt, 'YYYY-MM-DD')) < 100;
    

    【讨论】:

    • 是的,我已经尝试过使用 toDate,它现在可以工作,但早些时候当我从 sql developer 运行此查询时,有 10 条记录来了​​,但现在有 8 条记录来了​​ toDate .. 我正在检查为什么会发生这种情况.
    • 到目前为止,我的应用程序正在使用 oracle db,但稍后它也将使用 mysql。所以在那之后这个解决方案将不起作用,因为 mysql 不支持“TO_DATE”功能。 mysql有什么解决方案吗?
    • @HarishBagora 这个问题问Oracle,所以如果答案有助于解决你的问题,你可以accept the answer。对于 MySQL 相关的,您可以提出一个新问题,其中包含您可能的查询以及您对 MySQL 的尝试。
    • 好的...接受,我会提出新的问题,谢谢:)
    • 对于 MySQL,您可以尝试使用DATEDIFF()。所以像select * from sbill.act_sub_t where DATEDIFF(act_sub_t.unsub_dt, act_sub_t.sub_dt) &lt; 100;
    猜你喜欢
    • 2018-09-02
    • 2022-11-10
    • 2020-06-22
    • 2019-09-03
    • 1970-01-01
    • 2022-06-29
    • 2019-07-23
    • 1970-01-01
    • 2018-08-17
    相关资源
    最近更新 更多