Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il modo più semplice per riempire le date vuote nei risultati di sql (su mysql o perl end)?

Quando hai bisogno di qualcosa del genere sul lato server, di solito crei una tabella che contiene tutte le date possibili tra due punti temporali, quindi unisci a sinistra questa tabella con i risultati della query. Qualcosa del genere:

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

In questo caso particolare sarebbe meglio mettere un piccolo segno di spunta sul lato client, se la data corrente non è precedente+1, metti delle stringhe di addizione.