使用SQL统计一个月每天数据
查某个月所有的天数SELECTDATE_ADD(DATE_ADD(DATE_ADD(LAST_DAY(STR_TO_DATE('2021-09-06', "%Y-%m-%d")),INTERVAL 1 DAY),INTERVAL - 1 MONTH),INTERVAL (CAST(help_topic_id AS SIGNED INTEG
·
1、查某个月每天的数据
a.查询某个月每天的日期
SELECT
DATE_ADD(
DATE_ADD(
DATE_ADD(
LAST_DAY(STR_TO_DATE('2021-09-06', "%Y-%m-%d")),
INTERVAL 1 DAY
),
INTERVAL - 1 MONTH
),
INTERVAL (
CAST(help_topic_id AS SIGNED INTEGER)
) DAY
) md
FROM
mysql.help_topic
WHERE help_topic_id < DAY(
LAST_DAY(STR_TO_DATE('2021-09-06', "%Y-%m-%d"))
)
ORDER BY help_topic_id
b.关联业务数据查询
SELECT
DATE_FORMAT(tmd.md, "%Y-%m-%d") `date`,b.id ,c.id
FROM
(SELECT
DATE_ADD(
DATE_ADD(
DATE_ADD(
LAST_DAY(STR_TO_DATE('2021-09-06', "%Y-%m-%d")),
INTERVAL 1 DAY
),
INTERVAL - 1 MONTH
),
INTERVAL (
CAST(help_topic_id AS SIGNED INTEGER)
) DAY
) md
FROM
mysql.help_topic
WHERE help_topic_id < DAY(
LAST_DAY(STR_TO_DATE('2021-09-06', "%Y-%m-%d"))
)
ORDER BY help_topic_id) tmd
LEFT JOIN b
ON DATE_FORMAT(tmd.md, "%Y-%m-%d") = DATE_FORMAT(b.startTime, "%Y-%m-%d")
LEFT JOIN c
ON c.id=b.id
WHERE (c.id = 1 OR c.id IS NULL)
GROUP BY DATE_FORMAT(tmd.md, "%Y-%m-%d")
ORDER BY `date`
2、查询过去三十天的数据
SELECT DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -help_topic_id DAY),'%m-%d') AS ttt,help_topic_id
FROM mysql.help_topic
WHERE help_topic_id < 30
3、查询本年12个月的数据
SELECT
DATE_FORMAT(
DATE_SUB(
CONCAT(YEAR(CURDATE()), '-12-31'),
INTERVAL (
CAST(help_topic_id AS SIGNED) - 0
) MONTH
),
'%Y-%m'
) MONTH
FROM
mysql.help_topic
WHERE
help_topic_id < 12
ORDER BY
help_topic_id
更多推荐
已为社区贡献1条内容
所有评论(0)