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

Съхранена процедура за изброяване на всички седмици между две дати

Можете да изберете всички дни и да филтрирате първия ден от седмицата (date_format(selected_date, '%w') = 0 ):

select selected_date, date_add(selected_date, INTERVAL 6 DAY)
from 
(select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_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) v
where selected_date between '2015-02-01' and '2015-02-28'
  AND date_format(selected_date, '%w') = 0

SQLFIDDLE:http://sqlfiddle.com/#!2/7bc0e/52

Можете да използвате

AND DAYOFWEEK(selected_date) = 1

вместо

date_format(selected_date, '%w') = 0

Мисля, че е малко по-четлив:http://sqlfiddle.com/#!2 /7bc0e/54




  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 таблица

  2. Защо този MySQL тригер причинява препълване на стека?

  3. MySQL Един към много към JSON формат

  4. Настройка на Kafka Connect за изпращане на запис от Aurora с помощта на AWS MSK

  5. ГРЕШКА 1044 (42000):Достъпът е отказан за „root“ с всички привилегии