Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest najprostszy sposób wypełniania pustych dat w wynikach sql (na końcu mysql lub perl)?

Kiedy potrzebujesz czegoś takiego po stronie serwera, zwykle tworzysz tabelę, która zawiera wszystkie możliwe daty między dwoma punktami w czasie, a następnie zostawiasz dołączenie tej tabeli z wynikami zapytania. Coś takiego:

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

W tym konkretnym przypadku lepiej byłoby trochę sprawdzić po stronie klienta, jeśli bieżąca data nie jest poprzednia+1, dodaj kilka dodatkowych ciągów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android studio getSlotFromBufferLocked:nieznany błąd bufora

  2. Darmowy hosting z obsługą PHP

  3. Jak przekonwertować cały zestaw znaków bazy danych MySQL i sortowanie do UTF-8?

  4. Resetowanie wskaźnika tablicy w wynikach PDO

  5. Jak wstawić, jeśli wiersz nie istnieje (UPSERT) w MySQL?