EDIT - Đã sửa đổi để đáp ứng tiêu chí (thời gian kết thúc) được chỉ định trong nhận xét:
Tôi tin rằng những gì bạn muốn làm là lưu trữ tỷ giá mỗi ngày một cách riêng biệt. Lưu trữ ít nhất một giá trị với tỷ lệ tổng hợp tất cả vào phút cuối cùng của một ngày nhất định (đây sẽ là hàng duy nhất cho các ngày có một tỷ lệ duy nhất cả ngày). Tại bất kỳ ngày / giờ nhất định nào, chỉ cần tham khảo bảng này để xác định tỷ lệ nhất định cho khoảng thời gian đó. Xem bên dưới:
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
Với dữ liệu này, truy vấn sau:
SELECT *
FROM
tRate
WHERE
rateDay = @execDay
and @execTime < rateEndTime
;
Trả về tập kết quả cho thời gian thực thi cụ thể:
+--------+---------+-------------+------+
| rateId | rateDay | rateEndTime | rate |
+--------+---------+-------------+------+
| 5 | 1 | 23:59:59 | 0.90 |
+--------+---------+-------------+------+