Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Liczba dni MySQL w zakresie dat, w ciągu miesiąca (Tabela rezerwacji)

Jesteś na właściwej linii. Musisz połączyć zapytanie z tabelą miesięcy, dla których chcesz uzyskać dane, które mogą być stałe lub (jak pokazano w poniższym przykładzie) tworzone dynamicznie w UNION podzapytanie:

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

Zobacz go na 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. MySql:jak zrobić podzapytanie i policzyć wszystkie wiersze, w których id jest takie samo w dwóch tabelach

  2. Laravel elokwentny withCount() powinien być wolniejszy niż tylko with()

  3. Wyniki wyszukiwania PHP dają inny wynik, jeśli podasz tylko jedną literę

  4. java.sql.SQLException Indeks parametru poza zakresem (1> liczba parametrów, czyli 0)

  5. Przenoszenie plików mysql między serwerami