mybatis查询mysql时间格式化 DATE_FORMAT

在数据库中对应的是DateTime,查询参数为String类型,缺少时分秒的情况下使用

select * from order where isDelete = 0
<if test="rev.orderDate != null and rev.orderDate != ''">
            <![CDATA[   AND DATE_FORMAT(order_date, '%Y-%m-%d')>=  DATE_FORMAT(#{rev.orderDate}, '%Y-%m-%d')   ]]>
</if>

order_date为数据库中字段名称,格式为DateTime类型
rev.orderDate为传入的时间参数,格式为String类型

mysql中的DATE_FORMAT函数 将order_date格式化成yyyy-mm-dd的格式对比参数中的rev.orderDate格式

在使用 LambdaQueryWrapperX 进行查询时,可以通过使用 `SqlKeyword` 枚举中的 `CUSTOM` 自定义查询条件,并在其中使用 `String.format` 方法来拼接 SQL 语句。因此,可以使用如下方式搭配 MySQL 的 `date_format` 函数: ```java // 导入需要的类 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.enums.SqlKeyword; import java.time.LocalDate; import java.time.format.DateTimeFormatter; // 定义查询条件 String pattern = "yyyy-MM-dd"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); LocalDate targetDate = LocalDate.of(2022, 9, 1); String targetDateString = targetDate.format(formatter); String sql = "date_format(create_time, '%Y-%m-%d') = '%s'"; String formattedSql = String.format(sql, targetDateString); LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Entity::getStatus, 1) .and(wrapper -> wrapper.apply(SqlKeyword.CUSTOM, formattedSql)); ``` 上述代码中,我们首先定义了一个日期格式器 `formatter` 和目标日期 `targetDate`,然后使用 `String.format` 方法根据目标日期生成了一个自定义查询条件 `formattedSql`,其中使用了 MySQL 的 `date_format` 函数。最后,我们通过 `LambdaQueryWrapper` 的 `apply` 方法将自定义查询条件添加到了查询条件中。 需要注意的是,由于 `String.format` 方法中使用了 `%` 符号,因此需要对其进行转义,即使用两个 `%` 表示一个 `%`,否则会导致格式失败。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值