mysql 查询并遍历当月年月日、查询指定时间段年月日
遍历日期:以日期为主表,左连接其他表,可以做匹配统计数据。如(某天数据有多少条等。。。)
遍历当月年月日
SELECT
DATE_FORMAT(
DATE_ADD(
DATE_ADD(CURDATE(), INTERVAL - DAY(CURDATE()) + 1 DAY),
INTERVAL ROW DAY
),
'%Y-%m-%d'
) DAY
FROM
(
SELECT
@ROW := @ROW + 1 AS ROW
FROM
(
SELECT
0
UNION ALL
SELECT
1
UNION ALL
SELECT
2
UNION ALL
SELECT
3
UNION ALL
SELECT
4
UNION ALL
SELECT
5
UNION ALL
SELECT
6
UNION ALL
SELECT
7
UNION ALL
SELECT
8
UNION ALL
SELECT
9
) t,
(
SELECT
0
UNION ALL
SELECT
1
UNION ALL
SELECT
2
UNION ALL
SELECT
3
UNION ALL
SELECT
4
UNION ALL
SELECT
5
UNION ALL
SELECT
6
UNION ALL
SELECT
7
UNION ALL
SELECT
8
UNION ALL
SELECT
9
) t2,
(SELECT @ROW :=- 1) r
) se
WHERE
DATE_FORMAT(
DATE_ADD(
DATE_ADD(CURDATE(), INTERVAL - DAY(CURDATE()) + 1 DAY),
INTERVAL ROW DAY
),
'%Y-%m-%d'
) <= DATE_FORMAT( LAST_DAY(CURDATE()), '%Y-%m-%d')
遍历指定时间段年月日
根据自己需求,在date_format中,选择格式化内容。以下时间为固定时间,放入MyBatis时,将时间替换掉即可。注:’<’ 小于号 在MyBatis中会出现编译错误,改 < 即可
SELECT
DATE_FORMAT(
DATE_ADD(
'2021-03-04',
INTERVAL ROW DAY
),
'%m-%d'
) DAY
FROM
(
SELECT
@ROW := @ROW + 1 AS ROW
FROM
(
SELECT
0
UNION ALL
SELECT
1
UNION ALL
SELECT
2
UNION ALL
SELECT
3
UNION ALL
SELECT
4
UNION ALL
SELECT
5
UNION ALL
SELECT
6
UNION ALL
SELECT
7
UNION ALL
SELECT
8
UNION ALL
SELECT
9
) t,
(
SELECT
0
UNION ALL
SELECT
1
UNION ALL
SELECT
2
UNION ALL
SELECT
3
UNION ALL
SELECT
4
UNION ALL
SELECT
5
UNION ALL
SELECT
6
UNION ALL
SELECT
7
UNION ALL
SELECT
8
UNION ALL
SELECT
9
) t2,
(SELECT @ROW :=- 1) r
) se
WHERE
DATE_FORMAT(
DATE_ADD(
'2021-03-04',
INTERVAL ROW DAY
),
'%m-%d'
) <= DATE_FORMAT('2021-04-03', '%m-%d')
结果如下