MyBatis-------时间函数处理
一、MySQL解决方案
MySQL使用date_format函数来解决。
SELECT * FROM `t_log`
WHERE
# 比19号多,但是不到21号,就是查询20号
date_format(operation_time,'%Y-%m-%d') > '2020-03-19'
AND
date_format(operation_time,'%Y-%m-%d') < '2020-03-21'
查询结果:
在MyBatis中写法实例。startDate是字符串类型,operation_time是SQL的时间类型
<if test="startDate != null and startDate != ''">
<![CDATA[
AND date_format(OPERATION_TIME,'%Y-%m-%d') >= #{startDate}
]]>
</if>
<if test="endDate != null and endDate != ''">
<![CDATA[
AND date_format(OPERATION_TIME,'%Y-%m-%d') <= #{endDate}
]]>
</if>
二、Oracle解决方案
Oracle解决方案:从头开始学Oracle--------时间函数
Oracle使用to_date函数来解决。
startDate与endDate是字符串类型,从实际解决方案上来看,是利用Oracle的to_date函数,将参数转为时间与表中的记录进行对比。
【t.CREATE_DATE】 ,这个字段是Oracle的DATE类型。
【 #{startDate}】 ,传入的参数为字符串为类型
<if test="startDate!=null and startDate !=''">
and
<![CDATA[
t.CREATE_DATE >=
to_date(concat(#{startDate},'00:00:00'),'YYYY-MM-DD HH24:MI:SS')
]]>
</if>
<if test="endDate!=null and endDate !=''">
and <![CDATA[
t.CREATE_DATE <=
to_date(concat(#{endDate},'23:59:59'),'YYYY-MM-DD HH24:MI:SS')
]]>
</if>
更多MyBatis使用经验
你看我都这么努力的分享知识给你了,鼓励一下又何妨O(∩_∩)O
你的打赏是对我最好的支持!