इस उत्तर में मैं आपकी कैलेंडर तालिकाएँ बनाने का तरीका बताऊँगा।
दिन, घंटे और मिनट के लिए तीन टेबल बनाएं:
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