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

MySQL GROUP BY और खाली पंक्तियों को भरें

इस उत्तर में मैं आपकी कैलेंडर तालिकाएँ बनाने का तरीका बताऊँगा।

दिन, घंटे और मिनट के लिए तीन टेबल बनाएं:

CREATE TABLE days (
  day DATE,
  PRIMARY KEY (day)
) 
CREATE TABLE hours (
  hour INT,
  PRIMARY KEY (hour)
) 
CREATE TABLE minutes (
  minute INT,
  PRIMARY KEY (minute)
) 

घंटे की तालिका को 0 से 23 तक की संख्याओं से और मिनट की तालिका को 0 से 59 तक की संख्याओं से भरें। दिनों की तालिका को भरने के लिए, आप निम्न की तरह एक प्रक्रिया बना सकते हैं:

CREATE PROCEDURE make_days(IN start_date DATE, IN end_date DATE)
BEGIN
  DECLARE curr_date DATE;
  SET curr_date = start_date;
  WHILE curr_date <= end_date DO
    INSERT IGNORE INTO days(day)  VALUES(curr_date);
    SET curr_date = DATE_ADD(curr_date, INTERVAL 1 DAY);
  END WHILE;
END

फिर आप इस तरह के दिन बनाने के लिए इस प्रक्रिया को कॉल कर सकते हैं:

CALL make_days('2011-01-01','2012-12-31');

अब आप निम्न के समान क्वेरी का उपयोग करके दिए गए समय अंतराल में प्रत्येक मिनट के लिए मान बना सकते हैं:

SELECT YEAR(day) AS year, MONTH(day) AS month, DAYOFMONTH(day) AS day, hour, minute
FROM days, hours, minutes
WHERE CAST(CONCAT(day,' ',hour,':',minute) AS DATETIME) BETWEEN '2011-08-31 22:00' AND '2011-09-01 10:00'
ORDER BY year, month, day, hour, minute


  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 में टेबल दिखाएं

  2. MySQL में ऑटो-इन्क्रीमेंट रीसेट नहीं हो रहा है

  3. Class.forName(com.mysql.jdbc.Driver).newInstance()

  4. मैं कैसे जांच सकता हूं कि PHP के साथ एक MySQL तालिका मौजूद है या नहीं?

  5. क्या मैं एकाधिक mysql कमांड लाइन इनवोकेशन के लिए एक बार पासवर्ड दर्ज कर सकता हूं, जहां प्रश्नों को पहले से नहीं जाना जाता है?