Oracle+MyBatis Plus时间区间搜索
今天遇到了条件中使用时间参数,数据库是Oracle的,查阅MyBatis Plus QueryWrapper 默认提供的几个方式都不行,
这种时间查询
// 预警时间
if (warning.getWarningTimeParams() != null
&& warning.getWarningTimeParams().get("beginTime") != null
&& warning.getWarningTimeParams().get("beginTime") != ""
&& warning.getWarningTimeParams().get("endTime") != null
&& warning.getWarningTimeParams().get("endTime") != "") {
qw.apply("warning_time >= TO_DATE({0}, 'yyyy-MM-dd HH24:mi:ss')", warning.getWarningTimeParams().get("beginTime"));
qw.apply("warning_time <= TO_DATE({0}, 'yyyy-MM-dd HH24:mi:ss')", warning.getWarningTimeParams().get("endTime"));
}
// 处理时间
if (warning.getUpdateTimeParams() != null
&& warning.getUpdateTimeParams().get("beginTime") != null
&& warning.getUpdateTimeParams().get("beginTime") != ""
&& warning.getUpdateTimeParams().get("endTime") != null
&& warning.getUpdateTimeParams().get("endTime") != "") {
qw.apply("update_time >= TO_DATE({0}, 'yyyy-MM-dd HH24:mi:ss')", warning.getUpdateTimeParams().get("beginTime"));
qw.apply("update_time <= TO_DATE({0}, 'yyyy-MM-dd HH24:mi:ss')", warning.getUpdateTimeParams().get("endTime"));
}
// dao中的字段
@TableField(exist = false)
private Map<String, Object> warningTimeParams;
@TableField(exist = false)
private Map<String, Object> updateTimeParams;
上面的oracle数据库中的字段格式是DATE类型的,而随着需求的更改变成了TIMESTAMP类型的,使用上面的方式进行搜索的时候就不太准确了
例如:
数据库中有数据但搜索不到
所以进行了更改
if (warning.getWarningTimeParams() != null
&& warning.getWarningTimeParams().get("beginTime") != null
&& warning.getWarningTimeParams().get("beginTime") != ""
&& warning.getWarningTimeParams().get("endTime") != null
&& warning.getWarningTimeParams().get("endTime") != "") {
// timestamp只支持秒的小数点后面六位,所以这里使用xff6
qw.apply("warning_time >= TO_TIMESTAMP({0}, 'yyyy-MM-dd HH24:mi:ssxff6')", warning.getWarningTimeParams().get("beginTime") + ".000000");
qw.apply("warning_time <= TO_TIMESTAMP({0}, 'yyyy-MM-dd HH24:mi:ssxff6')", warning.getWarningTimeParams().get("endTime") + ".999999");
}
// sql语句
// select * from T_WARNING where WARNING_TIME >= TO_TIMESTAMP('2021-10-24 20:38:56.000000', 'yyyy-MM-dd HH24:mi:ssxff6') and warning_time <= TO_TIMESTAMP('2021-10-24 20:38:56.999999', 'yyyy-MM-dd HH24:mi:ssxff6');
普通的时间搜索
if (device.getParams() != null
&& device.getParams().get("beginTime") != null
&& device.getParams().get("beginTime") != ""
&& device.getParams().get("endTime") != null
&& device.getParams().get("endTime") != "") {
qw.between("create_time", device.getParams().get("beginTime") + " 00:00:00", device.getParams().get("endTime") + " 23:59:59");
}
作者:山丘!
-------------------------------------------
你闻讯而来,我大喜过望,我在这等你,你又在哪呢?喜欢的话加一个“关注”呗!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!