我有一个名为final_registration的表,我在其中存储注册数据,下面是我的表:
*---------------------------------------------------------------*
| id | event_id | Name | booking_date | ticket_status |
*---------------------------------------------------------------*
| 1 | 101 | Sandeep | 2018-11-30 15:43:24 | active |
| 2 | 101 | Jagveer | 2018-12-01 18:44:20 | active |
| 3 | 101 | Sudhir | 2018-12-01 20:34:20 | active |
| 4 | 101 | Aman | 2018-12-03 18:44:20 | active |
*---------------------------------------------------------------*
我正在运行以下输出查询:
SELECT COUNT(id), booking_date
FROM final_registration
WHERE `event_id` = 101
AND `booking_date` >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
AND ticket_status='active'
GROUP BY DATE_FORMAT(`booking_date`, '%d-%b');
输出显示:
*--------------------------*
| count(id) | booking_date |
*--------------------------*
| 2 | 2018-12-01 |
| 1 | 2018-12-03 |
*--------------------------*
但我不想这样,我想从查询中得到以下输出:
*--------------------------*
| count(id) | booking_date |
*--------------------------*
| 2 | 2018-12-01 |
| 0 | 2018-12-02 |
| 1 | 2018-12-03 |
| 0 | 2018-12-04 |
*--------------------------*
注:今天是2018年12月4日,所以在这里,我使用的是当前日期。
那么,如果我的表值中没有日期,我如何生成自动日期呢?
使用从当前日期开始的循环,然后在存在值的情况下填充表。
显然,你必须考虑停止循环,比如检查您表格的最后一个条目具有循环的当前日期
好吧,正如@jarlh上面所说,你最好得到一个日历表,然后把它加入你的表中。网上有很多东西可以买到。我可以建议的第二种选择是,除非你想创建一个表格,否则就是写一个excel表格,在表格的开头有日期和一个简单的id,下一列可以是你自己选择的格式的实际日期。然后,右键单击ssms对象资源管理器上的数据库名称并使用导入数据。你不必创建表格,你可以将excel文件导入数据库。那就加入桌子吧。