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

Hvad er den mest ligetil måde at udfylde tomme datoer i SQL-resultater (i enten mysql- eller perl-enden)?

Når du har brug for sådan noget på serversiden, opretter du normalt en tabel, som indeholder alle mulige datoer mellem to tidspunkter, og derefter slutter du dig til denne tabel med forespørgselsresultater. Noget som dette:

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

I dette særlige tilfælde ville det være bedre at sætte et lille flueben på klientsiden, hvis den aktuelle dato ikke er previos+1, så sæt nogle tilføjelsesstrenge.



  1. Hvordan bruger man Room Persistence Library med forududfyldt database?

  2. Sådan fungerer STR()-funktionen i SQL Server (T-SQL)

  3. Hvordan medtager man nul/0 resultater i COUNT aggregat?

  4. Hvordan virker COPY, og hvorfor er det så meget hurtigere end INSERT?