Mybatis从数据库中统计周一到周日的数量
SELECT
ifnull( table2.count, 0 ) BeatNum
FROM
(
SELECT
@i := @i + 1 AS 'NO',
DATE (DATE_ADD(#{startDate}, INTERVAL @i DAY )) AS DATE
FROM
tableName,
( SELECT @i := - 1 ) t
WHERE @i DATEDIFF(#{endDate},#{startDate})) table1
LEFT JOIN (
SELECT
DATE_FORMAT( i.CREATE_DATETIME, '%Y-%m-%d' ) AS today,
ifnull( count( 1 ), 0 ) AS count
FROM
tableName j
INNER JOIN tableName i ON j.dispatch_id = i.id
WHERE
i.is_active = '1'
AND j.task_type = #{taskType}
AND i.house_code = #{houseCode}
AND i.dispatch_status = 'Finished'
AND i.create_datetime BETWEEN #{startDate} AND #{endDate}
GROUP BY
today
) table2 ON table2.today = table1.DATE
ORDER BY
table1.DATE ASC
@i := @i + 1:定义一个i变量每次加1
date_add()常常用户在Mysql的sql中实现对日期类型的操作,比如增加或者减少,但是不改变原来的数据,只是对查询的数据做处理,这里展示使用示例:
DATE_ADD(date,INTERVAL expr unit)
interval是固定标志,expr 表示数量,可以为正负,表示加减,unit表示日期类型 可以是yy,ww,dd等分别表示,年,周,天等
DATEDIFF:函数用于返回两个日期的天数
table1,table2:临时表名
DATE_FORMAT:日期格式化