一个显而易见的解决方案是创建一个包含范围内的每个日期的表格,并选择您留下的数据加入到这个:
CREATE TABLE days (day DATE NOT NULL, PRIMARY KEY day);
INSERT INTO days (day) VALUES (20110101);
INSERT INTO days (day) VALUES (20110102);
....
SELECT days.day, yourtable.*
FROM days LEFT JOIN yourtable
ON days.day=yourtable.day;
另外,您可以注入使用PHP缺少的天(但我认为jupaju的代码是相当有缺陷):
// ensure your qry returns DATE_FORMAT(day, '%Y-%m-%d') AS day
$lastday='';
while ($r=mysql_fetch_assoc($qry_result)) {
if (!$lastday) $lastday=$r['day'];
while ($r['day']>$lastday) {
print $lastday . "\n";
$lastday=add_day($lastday);
}
unset($r['day']);
print $lastday . ',' . implode(',', $r) . "\n";
}
function add_day($day)
{
list($yr, $mo, $da)=explode('-',$day);
$t=mktime(4,0,0,$mo, $da, $yr)+24*60*60; // NB not all days are 24 hours
return date('Y-m-d',$t);
}
我知道这应该如何工作,但不知何故,我最终更多的时间格式化日期比我想要的:P – Chrisvdberge 2011-06-15 11:12:29