Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Jumlah Hari MySQL di dalam DateRange, dalam sebulan (Tabel Pemesanan)

Anda berada di jalur yang benar. Anda perlu menggabungkan kueri Anda dengan tabel bulan yang Anda inginkan datanya, yang dapat bersifat permanen atau (seperti yang ditunjukkan pada contoh saya di bawah) dibuat secara dinamis dalam UNION subkueri:

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

Lihat di 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. Mungkinkah kueri PHP MYSQL mengabaikan variabel kosong dalam klausa WHERE?

  2. Tutorial MySQL Workbench – Panduan Komprehensif Untuk Alat RDBMS

  3. Dapatkan data per jam dengan jeda dari tengah malam hingga sekarang

  4. Bagaimana cara mengoptimalkan indeks mysql sehingga operasi INSERT terjadi dengan cepat pada tabel besar dengan sering menulis dan membaca?

  5. Batasi hasil dari tabel yang digabungkan menjadi satu baris