【问题标题】:Oracle TO_DATE function parallel in Mysql which should support both DB oracle and mysqlMysql 中的 Oracle TO_DATE 函数并行,应该同时支持 DB oracle 和 mysql
【发布时间】: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


【解决方案1】:

似乎hibernate不会检查act_sub_t.unsub_dtact_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) 

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

【讨论】:

  • 我还有一个查询,如果您能提供帮助会很好.. select TO_DATE(e.created_dt, 'dd-mm-yy'),sum(CURRENT_BAL) from sbill.act_resource_t e按 T​​O_DATE 分组(e.created_dt,'dd-mm-yy');在这里,我使用了 TO_DATE,因为我想按日期分组,没有时间。这里我可以使用什么可以在 oracle 和 mysql 上运行?
  • 我怀疑是否有适用于 Oracle TRUNC(e.created_dt) 和 MySQL DATE(e.created_dt) 数据库的解决方案...
  • 每当我需要计算 diff b/w 两个日期时,我都会做 date2 - date1 那么它也可以与 mysql 一起使用吗?
  • 应该,我没有设置来测试它。但是正如您测试过的那样,我相信它在所有情况下都可以使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
相关资源
最近更新 更多