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使用经验

         MyBaits操作经验目录贴

你看我都这么努力的分享知识给你了,鼓励一下又何妨O(∩_∩)O

你的打赏是对我最好的支持!

                     

posted @ 2022-07-17 12:14  小大宇  阅读(463)  评论(0编辑  收藏  举报