MySQL中实现模糊匹配时间,使用DATE_FORMAT (),SUBSTRING()实现查询的情景解决,以及对于在MySQL语句中、使用STR_TO_DATE()函数解决时间类型,字符串处理的问题

:本篇幅主要针对项目中MySQL语句的写法和处理来写。

一、模糊查询时间类型

1.情景描述:

数据库的时间为 DateTime类型----也就是 :yyyy-MM-dd HH-mm-ss的格式,
而我们在查询的时候一般会用日期来查,例如 2022-09-23

2.产生问题

如 这样写当然是查不出来数据的

SELECT *
FROM t_sep_jsa
WHERE DeleteFlg=0
AND WorkDate='2022-09-23';
# 上一行在项目中我们正常这样写
AND WorkDate=#{date};

3.正确写法-DATE_FORMAT函数

SELECT *
FROM t_sep_jsa
WHERE DeleteFlg=0
  AND DATE_FORMAT(WorkDate,'%Y-%m-%d') ='2022-09-23';

在这里插入图片描述

1)针对项目实际需求进行优化
SELECT *
FROM t_sep_jsa
WHERE DeleteFlg=0
  AND DATE_FORMAT(WorkDate,'%Y-%m-%d') = SUBSTRING('2022-09-23',1,10);


 # 很显然在项目里我们要用  #{}来获取,所以应该用下面这种写法替代即可
SELECT *
FROM t_sep_jsa
WHERE DeleteFlg=0
  AND DATE_FORMAT(WorkDate,'%Y-%m-%d') = SUBSTRING(#{xxxdate}},1,10);

4.DATE_FORMAT ()函数解析

DATE_FORMAT(参数1,参数2):
··· 参数1:你的实际字段名,看例子也应该可以看出来。
··· 参数2:你的实际字段要被转化成的格式,例如要转化成 ‘年-月-日‘ ,那就像上边例子中那样写,
你也可以写成 ‘%Y-%m’ 年-月
或者: ‘%Y%M%d’ 即没有横杠,,,年月日 的形式,想怎么改就怎么改。

5.SUBSTRING()函数解析

这个函数看名字也知道,是字符串截取。
SUBSTRING(参数1,参数2,参数3)
参数1:要被截取的字段或者字符串。 也就是 #{data}
参数2:截取 参数1 的开始位置, 为1就是从第一个字符串开始截取
参数3:截取 参数1 的结束位置, 他们是个闭区间 【参数1,参数2】
例如:SUBSTRING(‘asdc’,1,3)
就会得到 ‘asd’

二、模糊查询字符串类型MySQL写法

1.情景分析

我们需要在MySQL语句中对传入的参数进行处理,并且使其完成模糊查询的功能。

2.上代码即可

    <select id="selectByMap"
            resultType="com.pcitc.basic.business.ProductionOperation.ScheduleManagement.ProductionDaily.entity.TScyxDdglScrb">
        SELECT
        <include refid="Base_Column_List"/>
        FROM t_scyx_ddgl_scrb
        WHERE DeleteFlg=0
        <if test="recordStatus != null and recordStatus !=''">
            and RecordStatus = #{recordStatus}
        </if>
        <if test="fillUser != null and fillUser !=''">
            <bind name="fillUser" value="'%'+fillUser+'%'"/>
            and FillUser like #{fillUser}
        </if>
        <if test="productionBeginDate != null and productionBeginDate !=''">
            and ProductionBeginDate &gt;= STR_TO_DATE(SUBSTRING(#{productionBeginDate},1,10),'%Y-%m-%d')
        </if>
        <if test="productionEndDate != null and productionEndDate !=''">
            and ProductionEndDate &lt;= STR_TO_DATE(SUBSTRING(#{productionEndDate},1,10),'%Y-%m-%d')
        </if>
ORDER BY LastModifiedDateTime DESC,CreatedDateTime DESC
    </select>

3.标签详解

<bind name=" “, value=” ">标签用于封装你传入的参数。
属性1:name:即你方法中传入的参数名字:
属性2:value就是你要将这个参数进行怎么样的封装,例如前后加上 % ,实现模糊查询
这个很简单

4.STR_TO_DATE()函数详解

该函数就是将 字符串转换成 DATE 格式,可能会避免一些错误。

该函数和 DATE_FORMAT ()函数一个意思。

希望能够帮助到大家。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值