数据库截取字符串SUBSTR函数的使用——时间字符串的切割以及比较

本文介绍如何在数据库中使用SUBSTR函数处理前端传来的日期字符串,例如'2019-08-15 03:03:14 - 2019-08-25 22:00:05',通过Mapper.xml进行字符串拆分,以适应字符串格式的时间区间筛选。内容涉及laydate的使用和数据库操作技巧,适合需要处理日期字符串的开发者参考。

数据库截取字符串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  &gt;= SUBSTR(#{createTime} FROM 1 FOR 18)
       </if>
       <if test="createTime != null and createTime != ''"><!-- 结束时间检索 -->
           and create_time  &lt;= 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 ,我也是借鉴了大佬的博客才做出来的

本文为博主实际开发中遇到的问题,经查阅上面的博文,结合我所遇到的问题本身整理出来的,如有侵权,联系删除。

如有疑问欢迎留言,欢迎一起探讨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值