要模糊查询某个时间段的数据,可以使用LIKE运算符结合通配符进行筛选。以下是修改后的SQL语句:

<select id="getTime" resultMap="ShopkeeperchangeMap">
    SELECT s.sid,
    staff.staffname,
    b1.branchname,
    d1.deptname,
    r1.rolename,
    b2.branchname as newbranchname,
    d2.deptname as newdeptname,
    r2.rolename as newrolename,
    s.transfertime,
    s3.staffname as st
    FROM shopkeeperchange s
    left JOIN staff ON staff.staffid = s.staffid
    left JOIN staff s3 ON s3.staffid = s.transferper
    LEFT JOIN branch b1 ON b1.branchid = s.branchid
    LEFT JOIN department d1 ON d1.deptid = s.deptid
    LEFT JOIN role r1 ON r1.roleid = s.roleid
    LEFT JOIN branch b2 ON b2.branchid = s.newbranchid
    LEFT JOIN department d2 ON d2.deptid = s.newdeptid
    LEFT JOIN role r2 ON r2.roleid = s.newroleid
    LEFT JOIN stafftransfer st ON s.staffid = st.staffid
    <where>
        <if test="transfertime != null">
            s.transfertime LIKE CONCAT('%', #{start[0]}, '%') AND s.transfertime LIKE CONCAT('%', #{end[1]}, '%')
        </if>
        st.state = 2 AND b1.branchname != '' AND b2.branchname != ''
    </where>
</select>

在上述代码中,使用了LIKE运算符和CONCAT函数来模糊匹配transfertime字段。CONCAT('%', #{start[0]}, '%')会将查询参数前后添加%通配符,表示匹配任意字符。这样,就可以模糊匹配某个时间段的数据。

SQL模糊查询时间段数据:使用LIKE和CONCAT实现时间范围检索

原文地址: https://www.cveoy.top/t/topic/frOE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录