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 तालिका से बूटस्ट्रैप-ड्रॉपडाउन में आइटम सम्मिलित करना