Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:Изберете всички дати в диапазон, дори ако няма налични записи

Надявам се, че ще разберете останалото.

select  * from (
select date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date from
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n1,
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n2,
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n3,
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n4,
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n5
) a
where date >'2011-01-02 00:00:00.000' and date < NOW()
order by date

С

select n3.num*100+n2.num*10+n1.num as date

ще получите колона с числа от 0 до max(n3)*100+max(n2)*10+max(n1)

Тъй като тук имаме max n3 като 3, SELECT ще върне 399 плюс 0 -> 400 записа (датите в календара).

Можете да настроите своя динамичен календар, като го ограничите, например, от min(date), която трябва, до now().



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Въведение в SQL типове данни

  2. Производителност на MySQL – Бавна заявка и innodb_buffer_pool_size

  3. Типове данни на MySQL:Знайте кои да използвате и как

  4. Не може да се свърже с MySQL 4.1+ чрез старо удостоверяване

  5. имплодиране на списък за използване в клауза IN на python MySQLDB