【发布时间】:2019-12-16 03:37:44
【问题描述】:
最初,我遇到了一个奇怪的问题,下面的查询在 Oracle SQL 开发人员中运行良好。
select * from sbill.act_sub_t where (act_sub_t.unsub_dt - act_sub_t.sub_dt) < 100;
但我在 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);
为了解决这个问题,我在 java 查询中使用了 TO_DATE 函数,并且能够在 java 中运行
select * from sbill.act_sub_t where (TO_DATE(ActSubT.unSubDt, 'DD-MM-YYYY') - TO_DATE(ActSubT.actualUnsubDt, 'DD-MM-YYYY')) < 100;
但实际问题是我的应用程序同时支持 Oracle 和 MySQL Db,而 TO_DATE 函数在 MYSQL 中不支持,因此当此应用程序在 MySQL 上运行时,此查询将不会运行。
那么我们有没有TO_DATE 的通用并行函数同时支持Oracle 和MySQL?
【问题讨论】:
-
CAST(ActSubT.unSubDt AS DATE)应该适用于两个数据库... -
列的数据类型是什么?
-
@Radagast81 我刚刚尝试了该解决方案这是我的查询 select ActSubT.id,ActSubT.actId from ActSubT ActSubT where (CAST(ActSubT.unsubDt AS DATE) - CAST(ActSubT.subDt AS DATE) )
-
@SalmanA Java 端我的数据类型名称是 LocalDateTime 而在 oracle 中数据类型是 DATE
-
嗯,那是hibernate的问题,
cast(act_sub_t.unsub_dt - act_sub_t.sub_dt as int)能用吗?
标签: java mysql oracle hibernate createquery