sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la forma más sencilla de rellenar fechas vacías en los resultados de sql (ya sea en mysql o en perl)?

Cuando necesita algo así en el lado del servidor, generalmente crea una tabla que contiene todas las fechas posibles entre dos puntos en el tiempo y luego se une a esta tabla con los resultados de la consulta. Algo como esto:

create procedure sp1(d1 date, d2 date)
  declare d datetime;

  create temporary table foo (d date not null);

  set d = d1
  while d <= d2 do
    insert into foo (d) values (d)
    set d = date_add(d, interval 1 day)
  end while

  select foo.d, count(date)
  from foo left join table on foo.d = table.date
  group by foo.d order by foo.d asc;

  drop temporary table foo;
end procedure

En este caso particular, sería mejor poner una pequeña verificación en el lado del cliente, si la fecha actual no es anterior+1, poner algunas cadenas adicionales.