mysql查询某个月的所有日的数据,例如1月,返回31个日的数据,如果哪一天没有数据返回0 10
4个回答
2018-11-21
展开全部
SELECT ADDDATE(y.first, x.d - 1) as d,x.d as b
FROM
(
SELECT @xi:=@xi+1 as d from
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) xc1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7) xc2,
(SELECT 1 ) xc3,
(SELECT @xi:=0) xc0
) X,
(
SELECT '2018-11-01' - INTERVAL DAY('2018-11-01') - 1 DAY AS first,
DAY(LAST_DAY('2018-11-01')) AS last) Y
WHERE x.d <= y.last
或者
SELECT ADDDATE(y.first, x.d - 1) as d
FROM
(
SELECT 1 AS d 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 UNION ALL
SELECT 10 UNION ALL
SELECT 11 UNION ALL
SELECT 12 UNION ALL
SELECT 13 UNION ALL
SELECT 14 UNION ALL
SELECT 15 UNION ALL
SELECT 16 UNION ALL
SELECT 17 UNION ALL
SELECT 18 UNION ALL
SELECT 19 UNION ALL
SELECT 20 UNION ALL
SELECT 21 UNION ALL
SELECT 22 UNION ALL
SELECT 23 UNION ALL
SELECT 24 UNION ALL
SELECT 25 UNION ALL
SELECT 26 UNION ALL
SELECT 27 UNION ALL
SELECT 28 UNION ALL
SELECT 29 UNION ALL
SELECT 30 UNION ALL
SELECT 31
) x,
(
SELECT '2018-11-01' - INTERVAL DAY('2018-11-01') - 1 DAY AS first,
DAY(LAST_DAY('2018-11-01')) AS last) y
WHERE x.d <= y.last
然后你应该知道了吧
SELECT
d.d,
count(t.id)
FROM
(
-- 这里贴前面两段代码中的任意一段
) d
LEFT JOIN
table t ON t.day = d.d -- 这个table是你要查的数据表
GROUP BY
d.d
2016-01-29
展开全部
你的数据表结构呢?假定你的数据表 日期字段为date_days 数据类型为date;假如你要查询一月的所以数据:select * from dbtbl where date_days like '%2016-01%'
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-01-29
展开全部
每条数据应该有存月份吧,按月查就好了;如果实在没有这个的话应该有个日期吧,按这个月的1号到月底的时间查也行吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-01-29
展开全部
LEFT(时间字段,7)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |