查询两天之间的有效记录,并按最近一个月的每一天计算

时间:2018-04-27 13:25:19

标签: mysql

表ShopOrder的列包括:

id   shopid starttime endtime 
1    123    2018-04-27  2018-04-28
2    234    2018-04-23  2018-04-30
3    189    2018-05-01  2018-05-30
4    321    2018-05-01  2018-05-29

我不想查询两天之间的有效店铺数量并按最近一个月的每一天计算,有效的店铺数量表示开始时间< = $ curDate< = endtime,而curDate是一个变量最糟糕的一个月的每一天。

今天是2018-04-27,所以查询结果应为:

day          count
2018-04-27    2
2018-04-26    1
2018-04-25    1
2018-04-24    1
2018-04-23    1
2018-04-22    0
2018-04-21    0
……………………………………
2018-03-26    0

我怎样才能实现这个使用MySQL?

1 个答案:

答案 0 :(得分:1)

在SQL中开始和结束日期以及一系列日期之间的转换是一个挑战,因为您可能没有一个表,其中包含当前月份中每天要加入的行。

您可以使用How to populate a table with a range of dates?中的一个答案中的逻辑填充包含日期的表格。

或者,由于您要生成的范围非常短,您可以在查询中手动创建它。由于您的示例范围从4月26日到3月27日,所以“最近一个月”的含义并不完全清楚,但如果过去30天足够合理,您可以使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="wrapper"> <div class="scroll-top scroll"> <div class=" content content-top"> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> <div class="block"></div> </div> </div> <div class="scroll-bottom scroll"> <div class=" content content-bottom"> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> <div class="block block-1"></div> </div> </div> </div>创建此列表。< / p>

Comparing date ranges讨论了如何测试某个日期是否在特定范围内,所以把这两个东西放在一起会给你类似的东西

UNION