Mysql和Mybatis使用笔记

1.在查询中,经常会遇到时间范围内查询数据

(1) 首先想到的是

between
SELECT*
FROM table
WHERE table.time BETWEEN '2019-08-01' AND '2019-08-10'

(2) 另一种

 < , > , = , >= , <= 
 mybatis中不可以直接使用
  &lt;= ,&gt;=
 或者
 <![CDATA[ <= ]]> , <![CDATA[ >= ]]>
2.在查询中,时间查询格式为yyyy-MM-dd,但是数据库中是yyyy-MM-dd hh:mm:ss

(1) TO_DAYS( )
MySql:

WHERE   TO_DAYS(oi.`create_time`)  >=  TO_DAYS('yyyy-MM-dd hh:mm:ss') 
	AND TO_DAYS(oi.`create_time`)   &lt;=  TO_DAYS('yyyy-MM-dd hh:mm:ss')

MyBatis中:

<if test="beginTime != null">
        AND TO_DAYS(oi.`create_time`)  &gt;=  TO_DAYS(#{beginTime})
</if>
<if test="endTime != null">
         AND TO_DAYS(oi.`create_time`)   &lt;=  TO_DAYS(#{endTime,jdbcType=VARCHAR})
 </if>

(2) <![CDATA[ ]]>

MyBatis中:

<if test="beginTime != null">
        <![CDATA[AND (DATE_FORMAT(oi.`create_time`, '%Y-%m-%d') >= DATE_FORMAT( #{beginTime}, '%Y-%m-%d'))]]>
 </if>
 <if test="endTime != null">
       <![CDATA[AND (DATE_FORMAT(oi.`create_time`, '%Y-%m-%d') <= DATE_FORMAT( #{endTime}, '%Y-%m-%d'))]]>
</if>
**3.计算环比,同比

这种用左连接比较好
(1) 计算同比
年同比,所以只关心YYYY

//上一年
YEAR ( od.create_time ) = YEAR ( date_sub( #{queryYear}, INTERVAL 1 YEAR ) )

(2) 月环比,只关心YYYY-MM

DATE_FORMAT( od.create_time, '%Y-%M' ) = DATE_FORMAT( date_sub( #{queryMonth}, INTERVAL 1 MONTH ),
                '%Y-%M' )

(3) 月同比,关心YYYY-MM

DATE_FORMAT( od.create_time, '%Y-%M' ) = DATE_FORMAT( date_sub( #{queryMonth}, INTERVAL 1 YEAR ),
                '%Y-%M' )

(4)某段时间内环比(同一个月范围内)

TO_DAYS( od.create_time ) <![CDATA[ >= ]]> TO_DAYS( date_sub( #{startDate}, INTERVAL 1 MONTH ) )

(5)某段时间内同比(同一个月范围内)

TO_DAYS( od.create_time ) <![CDATA[ >= ]]> TO_DAYS( date_sub( #{startDate} , INTERVAL 1 YEAR ) )
.当数据为null时,让其显示“某些字符”

**IFNULL("字段", "要显示的内容")**

IFNULL(mi.company_name, "平台")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值