表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?
答案 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