Я строю быстрый CSV из таблицы MySQL с помощью запроса:
select DATE(date),count(date) from table group by DATE(date) order by date asc;
и просто выгрузить их в файл в perl через:
while(my($date,$sum) = $sth->fetchrow) {
print CSV "$date,$sum\n"
}
В данных есть пробелы в датах:
| 2008-08-05 | 4 |
| 2008-08-07 | 23 |
Я хотел бы дополнить данные, чтобы заполнить пропущенные дни записями с нулевым счетом, чтобы в итоге:
| 2008-08-05 | 4 |
| 2008-08-06 | 0 |
| 2008-08-07 | 23 |
Я собрал действительно неуклюжий (и почти наверняка глючный) обходной путь с массивом дней в месяце и некоторой математикой, но должно быть что-то более простое как в MySQL, так и в Perl.
Какие-нибудь гениальные идеи / пощечины, почему я так глуп?
В итоге я остановился на хранимой процедуре, которая сгенерировала временную таблицу для рассматриваемого диапазона дат по нескольким причинам:
- Я знаю диапазон дат, который буду искать каждый раз
- К сожалению, рассматриваемый сервер не был тем, на котором я мог установить perl-модули в atm, и его состояние было достаточно дряблым, что на нем ничего не было удалено. Date :: - y установлен
Perl Date / DateTime-повторяющиеся ответы также были очень хорошими, я хотел бы выбрать несколько ответов!