संपादित करें - टिप्पणियों में निर्दिष्ट मानदंडों (समाप्ति समय) को पूरा करने के लिए संशोधित:
मेरा मानना है कि आप जो करना चाहते हैं वह प्रत्येक दिन की दर को अलग से स्टोर करना है। किसी दिए गए दिन के अंतिम मिनट के साथ कम से कम एक मान को अंतिम कैच-ऑल रेट के रूप में स्टोर करें (यह पूरे दिन एक ही दर के साथ दिनों के लिए एकमात्र पंक्ति होगी)। किसी भी दिन/समय पर, उस अवधि के लिए दी गई दर निर्धारित करने के लिए बस इस तालिका को देखें। नीचे देखें:
DROP TABLE IF EXISTS tRate;
CREATE TABLE tRate (
rateId INT(11) UNSIGNED NOT NULL auto_increment,
rateDay TINYINT(1),
rateEndTime TIME,
rate DECIMAL(9,2),
PRIMARY KEY (rateId)
)
;
INSERT INTO tRate VALUES
(NULL, 0, '00:10:00', '0.80'),
(NULL, 0, '23:59:59', '0.90'),
(NULL, 1, '00:10:00', '0.90'),
(NULL, 1, '00:16:00', '0.75'),
(NULL, 1, '23:59:59', '0.90')
-- (etc. for all days 0-6)
;
SET @execDay = DATE_FORMAT(NOW(), '%w'); -- 1 in the case of today for the resultset below
SET @execTime = DATE_FORMAT(NOW(), '%H:%m:%s'); -- 14:02:33 at the time this example was run
इस डेटा को देखते हुए, निम्नलिखित प्रश्न:
SELECT *
FROM
tRate
WHERE
rateDay = @execDay
and @execTime < rateEndTime
;
विशेष निष्पादन समय के लिए परिणामसेट लौटाता है:
+--------+---------+-------------+------+
| rateId | rateDay | rateEndTime | rate |
+--------+---------+-------------+------+
| 5 | 1 | 23:59:59 | 0.90 |
+--------+---------+-------------+------+