Mysql和Mybatis使用笔记

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

(1) 首先想到的是

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

(2) 另一种

 < , > , = , >= , <= 
 mybatis中不可以直接使用
  <= ,>=
 或者
  , = ]]>

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`)   <=  TO_DAYS('yyyy-MM-dd hh:mm:ss')

MyBatis中:


        AND TO_DAYS(oi.`create_time`)  >=  TO_DAYS(#{beginTime})


         AND TO_DAYS(oi.`create_time`)   <=  TO_DAYS(#{endTime,jdbcType=VARCHAR})
 

(2)

MyBatis中:


        = DATE_FORMAT( #{beginTime}, '%Y-%m-%d'))]]>
 
 
       

**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 ) = ]]> TO_DAYS( date_sub( #{startDate}, INTERVAL 1 MONTH ) )

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

TO_DAYS( od.create_time ) = ]]> TO_DAYS( date_sub( #{startDate} , INTERVAL 1 YEAR ) )

.当数据为null时,让其显示“某些字符”

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

IFNULL(mi.company_name, "平台")

你可能感兴趣的:(Spring学习之路)