sql >> Database >  >> RDS >> Mysql

MySQL:selecteer alle datums tussen datumbereik en ontvang tabelgegevens die overeenkomen met datums

Ik kwam hier achter door de vraag in de oplossing voor het verkrijgen van alle datums aan te passen.

De volgende query retourneert alle datums en tellingen van de ID's als er records zijn:

select d.date, count(v.id) from 
(select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) date from
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) d
left join visitors v on d.date = v.date
where d.date between '2016-06-01' and '2016-06-30'
group by d.date
order by d.date

Hoffelijkheid voor het verkrijgen van het datumbereik gaat naar @mark-bannister en een simpele join op de zoekopdracht die overeenkomt met resultaten, en sorteren levert de oplossing op.



  1. Hoe een rij in SQL te verwijderen

  2. Een listener configureren in Oracle Database (12c, 18c en 19c edities)

  3. Parametersnuiven (of spoofen) in SQL Server

  4. Unieke sleutel met NULL's