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

генерира дни от период от време

Това решение не използва примки, процедури или временни таблици . Подзаявката генерира дати за последните 10 000 дни и може да бъде удължена, за да отиде толкова назад или напред, колкото желаете.

select a.Date 
from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY as Date
    from (select 0 as a 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) as a
    cross join (select 0 as a 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) as b
    cross join (select 0 as a 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) as c
    cross join (select 0 as a 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) as d
) a
where a.Date between '2010-01-20' and '2010-01-24' 

Изход:

Date
----------
2010-01-24
2010-01-23
2010-01-22
2010-01-21
2010-01-20

Бележки относно производителността

Тествайте го тук , производителността е изненадващо добра:горната заявка отнема 0,0009 сек.

Ако разширим подзаявката, за да генерира прибл. 100 000 числа (и по този начин дати на стойност около 274 години), той работи за 0,0458 сек.

Между другото, това е много преносима техника, която работи с повечето бази данни с малки корекции.

Пример за SQL Fiddle, връщащ 1000 дни



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да инициализирам MySQL база данни със схема в Docker контейнер?

  2. Внедряване на релационни бази данни на MySQL в Ubuntu 12.04 (Precise Pangolin)

  3. Извличане на последния запис във всяка група - MySQL

  4. Управление на потребителски акаунт, роли, разрешения, удостоверяване PHP и MySQL - част 4

  5. PHP - Използване на PDO с масив от клаузи IN