首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -查询日期范围

问MySQL -查询日期范围
EN

Database Administration用户
提问于 2018-09-29 01:30:17
回答 1查看 450关注 0票数 0

我有一张orders桌。假设它只有2列,id和created_at。

想象一下,我的orders表中有一个数据如下所示:

代码语言:javascript
复制
id | created_at
01 | 2018-09-29
02 | 2018-09-29
03 | 2018-09-30

我想在那一天内选择所有订单。

我可以使用以下查询来选择记录。

代码语言:javascript
复制
SELECT created_at AS date, COUNT(id) AS result 
FROM orders
GROUP BY created_at
ORDER BY date

这将返回:

代码语言:javascript
复制
date | result
2018-09-29 | 2
2018-09-30 | 1

我希望展开上面的查询,以生成以下结果:(daterange)

代码语言:javascript
复制
date | result
2018-09-15 | 0
2018-09-16 | 0
...
2018-09-29 | 2
2018-09-30 | 1

这个是可能的吗?若要选择不存在的数据以生成日期范围报告,请执行以下操作?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-09-29 03:11:22

你想要的结果一定是这样的:

代码语言:javascript
复制
 date       | result
2018-09-01   |    0
2018-09-02   |    0
2018-09-03   |    0
2018-09-04   |    0
....
2018-09-28   |    0
2018-09-29   |    2
2018-09-28   |    1

您需要为天数创建一个表或临时表。

代码语言:javascript
复制
id 
1
2
3
4
...
28
29
30
31

并尝试查询以下内容:

代码语言:javascript
复制
SELECT 
    DATE((select CONCAT(YEAR(CURDATE()), '-', MONTH(CURDATE()),'-' ,day))) as Date1, 
        COUNT(o.order_id) 
        as counting from orders as o 
        right join numberofdays d 
        on d.day = DAY(o.created_at) 
        GROUP BY Date1
        ORDER BY Date1

我使用了正确的连接:

希望这能帮上忙。谢谢。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/218860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档