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

MySQL Số ngày trong DateRange, trong một tháng (Bảng đặt chỗ)

Bạn đang ở đúng dòng. Bạn cần kết hợp truy vấn của mình với một bảng các tháng mà bạn muốn có dữ liệu, bảng này có thể là vĩnh viễn hoặc (như được hiển thị trong ví dụ của tôi bên dưới) được tạo động trong một UNION truy vấn con:

SELECT   YEAR(month.d),
         MONTHNAME(month.d),
         SUM(1 + DATEDIFF( -- add 1 because start&finish on same day is still 1 day
           LEAST(Checkout, LAST_DAY(month.d)), GREATEST(Checkin, month.d)
         )) AS days
FROM     bookingdata
  RIGHT JOIN (
                   SELECT 20110101 AS d
         UNION ALL SELECT 20110201 UNION ALL SELECT 20110301
         UNION ALL SELECT 20110401 UNION ALL SELECT 20110501
         UNION ALL SELECT 20110601 UNION ALL SELECT 20110701
         UNION ALL SELECT 20110801 UNION ALL SELECT 20110901
         UNION ALL SELECT 20111001 UNION ALL SELECT 20111101
         UNION ALL SELECT 20111201
  ) AS month ON
             Checkin <= LAST_DAY(month.d)
         AND month.d <= Checkout
GROUP BY month.d

Xem nó trên sqlfiddle .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PreparedStatement:Tôi có thể cung cấp tên cột làm tham số không?

  2. CodeIgniter:Cách thực hiện truy vấn MySQL được chọn (Tên trường riêng biệt)

  3. Quyền truy cập mysql bị từ chối đối với người dùng (chỉ xảy ra khi kết nối qua php)

  4. Kiểm tra xem tất cả các giá trị trong một mảng có tồn tại trong một cột cơ sở dữ liệu hay không

  5. Tại sao truy vấn này không hoạt động trong SQLite nhưng hoạt động tốt trong MySQL và MSAccess?