Estoy construyendo un csv rápida de una tabla MySQL con una consulta como:¿Cuál es la forma más directa de rellenar fechas vacías en resultados sql (en mysql o perl end)?
select DATE(date),count(date) from table group by DATE(date) order by date asc;
y simplemente tirarlos a un archivo en Perl en un:
while(my($date,$sum) = $sth->fetchrow) {
print CSV "$date,$sum\n"
}
hay lagunas en la fecha de datos, sin embargo:
| 2008-08-05 | 4 |
| 2008-08-07 | 23 |
me gustaría rellenar los datos para llenar los días que faltan con entradas de recuento cero para terminar con:
| 2008-08-05 | 4 |
| 2008-08-06 | 0 |
| 2008-08-07 | 23 |
Arreglé una solución muy incómoda (y casi con seguridad con errores) con una serie de días por mes y algunas matemáticas, pero tiene que haber algo más sencillo en el lado de mysql o perl.
¿Alguna idea de genio/bofetadas en la cara de por qué soy tan tonto?
Terminé yendo con un procedimiento almacenado que generó una tabla temporal para el intervalo de fechas en cuestión por un par de razones:
- sé el intervalo de fechas voy a estar mirando para cada tiempo
- el servidor en cuestión por desgracia no era uno que puedo instalar módulos perl en atm, y el estado de bastaba decrépita que no tiene nada remotamente Fecha :: - y instalado
Las respuestas de iteración Perl Date/DateTime también fueron muy buenas. ¡Ojalá pudiera seleccionar varias respuestas!