我正在从 mysql 表构建一个快速 csv,查询如下:
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 方面必须有更简单的东西。
有什么天才的想法/耳光可以解释为什么我这么愚蠢吗?
我最终使用了一个存储过程,该过程为相关日期范围生成了一个临时表,原因如下:
- 我知道我每次要寻找的日期范围
- 不幸的是,有问题的服务器不是我可以在 atm 上安装 perl 模块的服务器,而且它的状态已经很破旧,没有远程安装任何东西 Date::-y
perl Date/DateTime 迭代的答案也非常好,我希望我可以选择多个答案!