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

MySQL Брой дни в рамките на DateRange, в рамките на месец (Таблица за резервации)

Вие сте на правилната линия. Трябва да обедините вашата заявка с таблица на месеците, за които искате данни, която може да бъде постоянна или (както е показано в моя пример по-долу) създадена динамично в UNION подзаявка:

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

Вижте го на 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. Извличане на данни от база данни в таблица чрез натискане на бутон

  2. Попълнете базата данни на Django

  3. Може ли да се създаде външен ключ, ако и двете полета не са уникални?

  4. Как мога да организирам изобилието от mysql таблици?

  5. $_POST променливите не работят с $_FILES и мултичастни/формулярни данни