java - Mysql 中的 Oracle TO_DATE 函数并行,应该同时支持 DB oracle 和 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);
所以为了解决这个问题,我TO_DATE
在我的 java 查询中使用了函数,并且我能够在 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
是 type DATE
。
与TO_DATE
仅 Oracle 一样,您可以使用CAST
数据库中常见的 -function:
CAST(ActSubT.unsubDt AS date) - CAST(ActSubT.subDt AS date)
或者
CAST(ActSubT.unsubDt - ActSubT.subDt AS int)
应该是很好的替代品。
推荐阅读
- mongodb - MongoDB 集群内部身份验证失败,副本集加入 - replSetHeartbeat 需要身份验证
- android - 带有改造和数据绑定的回收站视图中没有来自 api 的数据
- r - 制作一个 R 循环以更合适地找到 bin R
- c# - DI 不向控制器注入服务
- bash - 在 CLI 中执行 hql 文件时,我可以用“meld_beeline”替换“hive”吗
- ios - TableViewCell 在 TableView 中超出范围
- cassandra - cassandra 源连接器和 kafka - 如果你只有 bigint 纪元时间戳怎么办?
- excel - 将文本和书签写入工作簿中嵌入的 Word 模板
- python - 为机器学习分类器提供深度特征(随机森林)
- python - 如何获取结构命令以更新输出?