MybatisPlus操作时间区间做查询条件,可能大家大多用的 ge() le()方法,但是,这只能对于MySql,Oracle数据库时间是需要to_date('date','fmt')函数的,所以,用MybatisPlus操作Oracle时,直接用le()或ge()会导致一直爆sql异常,对此正确的写法应该是:
QueryWrapper<ReportOrder> wrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getDeliveryDateStart())) {
wrapper.apply("DELIVERY_DATE >= TO_DATE({0},'yyyy-MM-dd')", query.getDeliveryDateStart());
}
if (StringUtils.isNotBlank(query.getDeliveryDateEnd())) {
wrapper.apply("DELIVERY_DATE <= TO_DATE({0},'yyyy-MM-dd')", query.getDeliveryDateEnd());
}
if (StringUtils.isNotBlank(query.getOrderDateStart())) {
wrapper.apply("ORDER_DATE >= TO_DATE({0},'yyyy-MM-dd')", query.getOrderDateStart());
}
if (StringUtils.isNotBlank(query.getOrderDateEnd())) {
wrapper.apply("ORDER_DATE <= TO_DATE({0},'yyyy-MM-dd')", query.getOrderDateEnd());
}