Я создаю быстрый csv из таблицы mysql с запросом вроде:
select DATE(date),count(date) from table group by DATE(date) order by date asc;
и просто сбрасывая их в файл в perl через a:
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 installed
Ответы perl Date/DateTime-iterating также были очень хорошими, мне хотелось бы выбрать несколько ответов!