Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Mysql के साथ दिनांक अंतराल खोजें

यह सही परिणाम देना चाहिए:

select
  id,
  min(startDate) as startFreeDate,
  count(*) - (endDate is null) numFreeDays
from (
  select
    pb1.id,
    pb1.bookingDate startDate,
    min(pb2.bookingDate) endDate
  from
    pricesBookings pb1 left join pricesBookings pb2
    on pb1.id=pb2.id
       and pb2.price>0
       and pb2.bookingDate>pb1.bookingDate
  where
    pb1.price=0
  group by
    pb1.id,
    pb1.bookingDate
) s
group by id, endDate
order by id, startDate

इसे देखें यहां

यदि आपको सभी मुफ्त स्लॉट खोजने की आवश्यकता है, उदाहरण के लिए, 14 दिन, तो आप HAVING जोड़ सकते हैं:

group by id, endDate
having count(*) - (endDate is null) >= 14
order by id, startDate


  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 त्रुटि:तालिका mysql.innodb_table_stats नहीं मिली

  2. TINYTEXT, TEXT, MEDIUMTEXT, और LONGTEXT अधिकतम संग्रहण आकार

  3. जेएस से PHP में परिवर्तनीय मान पास करें

  4. डेटाबेस फ़ील्ड को 1 . से बढ़ाएँ

  5. SQL तालिका से बूटस्ट्रैप-ड्रॉपडाउन में आइटम सम्मिलित करना