sql >> Database >  >> RDS >> Mysql

Wat is de meest eenvoudige manier om lege datums in sql-resultaten op te vullen (op mysql- of perl-uiteinde)?

Als je zoiets aan de serverkant nodig hebt, maak je meestal een tabel die alle mogelijke datums tussen twee tijdstippen bevat, en voeg je vervolgens aan deze tabel toe met de queryresultaten. Zoiets als dit:

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 dit specifieke geval zou het beter zijn om een ​​klein vinkje te plaatsen aan de kant van de klant, als de huidige datum niet previos+1 is, voeg dan wat extra strings toe.



  1. Willekeurige rijen selecteren met MySQL

  2. Toon alle query's die naar een Oracle-database komen

  3. tabelnaam doorgeven als plsql-parameter

  4. Sorteer NULL-waarden aan het einde van een tabel