mysql查询某个月的所有日的数据,例如1月,返回31个日的数据,如果哪一天没有数据返回0 10

 我来答
匿名用户
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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式