Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est le moyen le plus simple de remplir les dates vides dans les résultats sql (sur mysql ou perl end) ?

Lorsque vous avez besoin de quelque chose comme ça côté serveur, vous créez généralement une table contenant toutes les dates possibles entre deux points dans le temps, puis rejoignez à gauche cette table avec les résultats de la requête. Quelque chose comme ça :

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

Dans ce cas particulier, il serait préférable de mettre une petite vérification côté client, si la date actuelle n'est pas previos + 1, mettez des chaînes supplémentaires.