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

Mysql और php में समय के मुक्त ब्लॉक ढूँढना?

इस क्वेरी को आजमाएं

SELECT
  a.id,
  a.start_hour,
  a.end_hour,
  TIMEDIFF(la.start_hour, a.end_hour) as `Free Time`
FROM appointment as a
  LEFT JOIN(SELECT * FROM appointment LIMIT 1,18446744073709551615) AS la
    ON la.id = a.id + 1
  LEFT JOIN (SELECT * FROM appointment) AS ra ON a.id = ra.id

यह ये परिणाम दिखाएगा

+---------------------------------------------+
¦ id ¦ start_hour BY ¦ end_hour   | Free Time |
¦----+---------------¦------------------------|
¦  1 ¦   08:00:00    ¦  08:15:00  | 05:45:00  |
¦  2 ¦   14:00:00    ¦  14:30:00  | 02:30:00  |
¦  3 ¦   17:00:00    ¦  17:45:00  | 03:15:00  |
¦  4 ¦   21:00:00    ¦  21:00:00  | (NULL)    |
+--------------------+------------------------+ 

इसके अलावा आपके पास तालिका में 21:00:00 होना चाहिए या आप अंतिम समय अंतर प्राप्त करने में सक्षम नहीं होंगे। मैंने तालिका में प्रारंभ और समाप्ति तिथि के रूप में 21:00:00 दर्ज किया।

संपादित

यह संशोधित क्वेरी है

SELECT
  a.id,
  a.end_hour AS `Free time Start`,
  IFNULL(la.start_hour,a.end_hour) AS `Free Time End`,
  IFNULL(TIMEDIFF(la.start_hour, a.end_hour),'00:00:00') AS `Total Free Time`
FROM appointment AS a
  LEFT JOIN (SELECT * FROM appointment LIMIT 1,18446744073709551615) AS la
    ON la.id = (SELECT MIN(id) FROM appointment where id > a.id LIMIT 1)      

और परिणाम है

+--------------------------------------------------------+
¦ id ¦ Free time Start ¦ Free Time End | Total Free Time |
¦----+-----------------¦---------------------------------|
¦  1 ¦   08:15:00      ¦ 14:00:00      |    05:45:00     |
¦  2 ¦   14:30:00      ¦ 17:00:00      |    02:30:00     |
¦  3 ¦   17:45:00      ¦ 21:00:00      |    03:15:00     |
¦  4 ¦   21:00:00      ¦ 21:00:00      |    00:00:00     |
+----------------------+---------------------------------+  

इस प्रश्न से सीखने के बिंदु हैं

  1. Timediff फ़ंक्शन का उपयोग। टाइमडिफ़ ('अंत समय', 'प्रारंभ समय')
  2. ऊपरी संख्या के साथ जुड़ना
  3. लंबे ऑफ़सेट और शून्य के बजाय 1 से शुरू होने वाली सीमा के साथ जुड़ने में पहले रिकॉर्ड से बचें
  4. IFNULL उपयोग ifnull('अगर यहां शून्य आता है', 'इसे तब चुनें')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP में डेटाबेस में डेटा को स्वचालित रूप से कैसे अपडेट करें

  2. मैं ddev में दूसरा डेटाबेस कैसे बना और लोड कर सकता हूँ?

  3. MySQL - मारियाडीबी - बहुत पहले संग्रहित प्रक्रिया लिखना

  4. COUNT(*) सिर्फ एक के बजाय कई पंक्तियों को लौटा रहा है

  5. MySQL:ऐसी पंक्तियाँ ढूँढना जो किसी रिश्ते में भाग नहीं लेती हैं