数据库截取字符串SUBSTR函数的使用
前端页面:
采用laydate:
- 引入laydate.js
<script th:src="@{/ajax/libs/laydate/laydate.js}"></script>
- 页面的input标签
<li class="select-time">
<label>创建时间: </label>
<input type="text" class="form-control" id="createTime" placeholder="时间范围" name="createTime"/>
</li>
- laydate的代码,详细的laydate代码见 https://www.layui.com/laydate
注意:实体类的createTime用String类型,用Date类型接收不到值(目前我还不知道用Date如何解决,如有大佬知道,麻烦留言讨论一下,谢谢了)
<script th:inline="javascript">
$(function(){
//时间选择器
//年月范围
laydate.render({
elem: '#createTime'
,type: 'datetime'
,range: true
});
});
</script>
- 由于传递到后台的是一个字符串如:2019-08-15 03:03:14 - 2019-08-25 22:00:05 ,需要进行字符串拆分,因为我参数用的实体类接收的,所以最好在 Mapper.xml 里面采取数据库截取字符串的方式来处理
<!--查询考核信息-->
<select id="selectTeachList" parameterType="SysTeach" resultMap="SysTeachResult">
<include refid="selectTeachContactVo"/>
WHERE 1=1
<if test="teachGrade != null and teachGrade != ''">
AND teach_grade like concat('%', #{teachGrade}, '%')
</if>
<if test="createTime != null and createTime != ''"><!-- 开始时间检索 -->
and create_time >= SUBSTR(#{createTime} FROM 1 FOR 18)
</if>
<if test="createTime != null and createTime != ''"><!-- 结束时间检索 -->
and create_time <= SUBSTR(#{createTime} FROM 22 FOR 18)
</if>
</select>
- 这样的话,最后执行的SQL语句为:
SELECT DISTINCT
teach_id,
teach_month,
teach_grade,
teach_chectin,
teach_exam,
teach_item,
teach_homework,
teach_csi,
create_time
FROM sys_teach
WHERE 1=1
AND create_time >= SUBSTR('2019-08-15 03:03:14 - 2019-08-25 22:00:05' FROM 1 FOR 18)
AND create_time <= SUBSTR('2019-08-15 03:03:14 - 2019-08-25 22:00:05' FROM 22 FOR 18)
ORDER BY teach_month ASC
更多相关资料数据库截取字符串请参考 https://www.cnblogs.com/clwydjgs/p/9324255.html ,我也是借鉴了大佬的博客才做出来的
本文为博主实际开发中遇到的问题,经查阅上面的博文,结合我所遇到的问题本身整理出来的,如有侵权,联系删除。
如有疑问欢迎留言,欢迎一起探讨!