Java Mysql中的Oracle TO_DATE函数并行,应同时支持DB Oracle和Mysql

Java Mysql中的Oracle TO_DATE函数并行,应同时支持DB Oracle和Mysql,java,mysql,oracle,hibernate,createquery,Java,Mysql,Oracle,Hibernate,Createquery,起初,我面临一个奇怪的问题,下面的查询在Oracle SQL developer中运行良好 select * from sbill.act_sub_t where (act_sub_t.unsub_dt - act_sub_t.sub_dt) < 100; 因此,为了解决这个问题,我在java查询中使用了to\u DATE函数,并且能够在java中运行 select * from sbill.act_sub_t where (TO_DATE(ActSubT.unSubDt, 'DD-MM

起初,我面临一个奇怪的问题,下面的查询在Oracle SQL developer中运行良好

select * from sbill.act_sub_t where (act_sub_t.unsub_dt - act_sub_t.sub_dt) < 100;
因此,为了解决这个问题,我在java查询中使用了
to\u DATE
函数,并且能够在java中运行

select * from sbill.act_sub_t where (TO_DATE(ActSubT.unSubDt, 'DD-MM-YYYY') - TO_DATE(ActSubT.actualUnsubDt, 'DD-MM-YYYY')) < 100;
从sbill.act_sub_t中选择*其中(截止日期(ActSubT.unsbdt,'DD-MM-YYYY')-截止日期(ActSubT.actualUnsubDt,'DD-MM-yyyyy'))<100;
但实际的问题是,我的应用程序同时支持Oracle和MySQL数据库,而MySQL中不支持
到目前为止
函数,所以当这个应用程序在MySQL上运行时,这个查询将不会运行


那么,我们是否有任何支持Oracle和MySQL的常见并行函数
TO\u DATE

似乎hibernate没有检查
act\u sub\u t.unsub\u dt
act\u sub\u dt
类型是否为
DATE

由于迄今为止
仅适用于Oracle,因此您可以使用数据库中常见的
CAST
-功能:

CAST(ActSubT.unsubDt AS date) - CAST(ActSubT.subDt AS date) 


应该是一个很好的替代品。

CAST(ActSubT.unsbdt AS DATE)
应该适用于两个数据库…列的数据类型是什么?@Radagast81我刚刚尝试了这个解决方案这是我的查询选择ActSubT.id,ActSubT.actId from ActSubT ActSubT where(CAST(ActSubT.unsbdt AS DATE)-CAST(ActSubT.subt AS DATE))<10但现在我遇到以下异常:java.lang.IllegalArgumentException:org.hibernate.QueryException:无法解析CAST:DATE的请求类型[从com.sbill.app.domain.ActSubT ActSubT actisubt where(CAST(ActSubT.unsbdt AS DATE)-CAST(ActSubT.subt AS DATE))<10]@SalmanA Java side我的数据类型名称是LocalDateTime,在oracle中数据类型是DATEHmm,这是hibernate的一个问题,
cast(act_sub_t.unsub_dt-act_sub_t.sub_dt as int)
有效吗?我还有一个问题,如果你能帮上忙,那就好了。。选择截止日期(例如,创建日期,'dd-mm-yy')、截止日期(例如,创建日期,'dd-mm-yy')从sbill.act\u-resource\u-te集团获得的金额(当前余额);在这里,我习惯于约会,因为我只想在约会时分组,而不需要时间。在这里,我可以使用什么可以同时在oracle和mysql上运行?我怀疑是否有一种解决方案可以同时适用于oracle
TRUNC(e.created_dt)
vs.mysql
DATE(e.created_dt)
…每当我需要计算两个日期的差异时,我都会使用date2-date1,那么它也可以使用mysql吗?应该,我没有测试它的设置。但是,正如您曾经测试过的那样,我相信它在所有情况下都会起作用。
CAST(ActSubT.unsubDt - ActSubT.subDt AS int)