Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thủ tục được lưu trữ để liệt kê tất cả các tuần giữa hai ngày

Bạn có thể chọn tất cả các ngày và lọc vào ngày đầu tiên của tuần (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

Bạn có thể sử dụng

AND DAYOFWEEK(selected_date) = 1

thay vì

date_format(selected_date, '%w') = 0

Tôi nghĩ nó dễ đọc hơn một chút: 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. Cách xóa một cột khỏi bảng trong MySQL

  2. phương thức không xác định trong khi sử dụng form_for trong phương thức bộ điều khiển mới

  3. Làm thế nào để chọn nội dung từ hai bảng khác nhau trong Mysql?

  4. Phương ngữ MyISAM tạo DDL sai

  5. Chạy tổng cộng trong phạm vi ngày - điền vào những ngày còn thiếu