Oracle TO_DATE 在 Mysql 中并行运行,应该同时支持 DB oracle 和 mysql
Oracle TO_DATE function parallel in Mysql which should support both DB oracle and mysql
最初,我遇到了一个奇怪的问题,下面的查询在 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的通用并行函数?
似乎 hibernate 不检查 act_sub_t.unsub_dt
和 act_sub_t.sub_dt
是 DATE
类型。
由于 TO_DATE
仅适用于 Oracle,您可以使用数据库中常用的 CAST
-函数:
CAST(ActSubT.unsubDt AS date) - CAST(ActSubT.subDt AS date)
或
CAST(ActSubT.unsubDt - ActSubT.subDt AS int)
应该是个不错的替代品。
最初,我遇到了一个奇怪的问题,下面的查询在 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的通用并行函数?
似乎 hibernate 不检查 act_sub_t.unsub_dt
和 act_sub_t.sub_dt
是 DATE
类型。
由于 TO_DATE
仅适用于 Oracle,您可以使用数据库中常用的 CAST
-函数:
CAST(ActSubT.unsubDt AS date) - CAST(ActSubT.subDt AS date)
或
CAST(ActSubT.unsubDt - ActSubT.subDt AS int)
应该是个不错的替代品。