一 oracle数据库
数据库时间类型为DATE
TO_CHAR 把日期或数字转换为字符串
TO_DATE 把字符串转换为数据库中的日期类型 TO_DATE(char, ‘格式’)
TO_NUMBER 将字符串转换为数字 TO_NUMBER(char, ‘格式’)
1、入参是String类型的数据
mybatis 处理时间范围
使用TO_DATE函数将String类型的时间转成yyyy-MM-dd格式时间。
<if test="jyzbLedger.voucherTimeTo != null and jyzbLedger.voucherTimeTo != ''">
and VOUCHER_TIME <![CDATA[>= ]]> TO_DATE(#{jyzbLedger.voucherTimeTo},'yyyy-MM-dd')
</if>
<if test="jyzbLedger.voucherTimeFrom != null and jyzbLedger.voucherTimeFrom != ''">
and VOUCHER_TIME <![CDATA[<= ]]> TO_DATE(#{jyzbLedger.voucherTimeFrom},'yyyy-MM-dd')
</if>
MybatisPlus中时间范围查询
queryWrapper
.apply(ObjectUtils.isNotEmpty(jyzbLedger.getVoucherTimeTo()),
"VOUCHER_TIME >= TO_DATE ({0},'yyyy-MM-dd')", jyzbLedger.getVoucherTimeTo())
.apply(ObjectUtils.isNotEmpty(jyzbLedger.getVoucherTimeFrom()),
"VOUCHER_TIME <= TO_DATE ({0},'yyyy-MM-dd')", jyzbLedger.getVoucherTimeFrom());
2、入参是Date类型的时间数据
Date类型
接参数就要和前端固定传参格式比如yyyy-MM-dd
,然后使用@DateTimeFormat格式化
,不使用 @DateTimeFormat然后使用Date类型接参数会报错 !
mybatis 处理时间范围
TO_CHAR 把日期或数字转换为字符串
使用 TO_CHAR 函数将入参日期格式转换成指定格式字符串,将查询的参数也转换成指定格式字符串
<!-- voucherTimeTo为Date类型时不能用 jyzbLedger.voucherTimeTo != '' 判空会报错的 -->
<if test="jyzbLedger.voucherTimeTo != null ">
and to_char(VOUCHER_TIME,'yyyy-MM-dd') <![CDATA[>= ]]> to_char(#{jyzbLedger.voucherTimeTo},'yyyy-MM-dd')
</if>
<if test="jyzbLedger.voucherTimeFrom != null ">
and to_char(VOUCHER_TIME,'yyyy-MM-dd') <![CDATA[<= ]]> to_char(#{jyzbLedger.voucherTimeFrom},'yyyy-MM-dd')
</if>
MybatisPlus中时间范围查询
参考上面的
二 mysql数据库
数据库时间类型为DATE
2、入参是Date类型的时间数据
- 入参
achievementDateStart: 2023-04-26
achievementDateStartEnd: 2023-05-19
- 接收参数类型
/**
* 业绩时间-开始
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "业绩时间-开始")
private Date achievementDateStart;
/**
* 业绩时间-结束
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "业绩时间-结束")
private Date achievementDateStartEnd;
mybatis 处理时间范围
date_format 将Date类型参数格式化成指定类型的时间
<if test="oppConditionVO.achievementDateStart != null and oppConditionVO.achievementDateStartEnd != null">
and date_format( achievement_date, '%Y-%m-%d' )
BETWEEN date_format( #{oppConditionVO.achievementDateStart}, '%Y-%m-%d' )
and date_format( #{oppConditionVO.achievementDateStartEnd}, '%Y-%m-%d' )
</if>
MybatisPlus中时间范围查询
queryWrapper.apply(oppConditionVO.getAchievementDateStart() != null,
"date_format (achievement_date,'%Y-%m-%d') >= date_format ({0},'%Y-%m-%d')", oppConditionVO.getAchievementDateStart())
.apply(oppConditionVO.getAchievementDateStartEnd() != null,
"date_format (achievement_date,'%Y-%m-%d') <= date_format ({0},'%Y-%m-%d')", oppConditionVO.getAchievementDateStartEnd());
Mybatis-Plus时间范围查询