EDITAR:modificado para cumplir con los criterios (hora de finalización) especificados en los comentarios:
Creo que lo que querrá hacer es almacenar la tarifa de cada día por separado. Almacene al menos un valor con el último minuto de un día determinado como tasa general final (esta será la única fila para los días con una sola tasa durante todo el día). En cualquier día/hora, simplemente consulte esta tabla para determinar la tarifa dada para ese período de tiempo. Ver a continuación:
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
Dados estos datos, la siguiente consulta:
SELECT *
FROM
tRate
WHERE
rateDay = @execDay
and @execTime < rateEndTime
;
Devuelve el conjunto de resultados para el tiempo de ejecución particular:
+--------+---------+-------------+------+
| rateId | rateDay | rateEndTime | rate |
+--------+---------+-------------+------+
| 5 | 1 | 23:59:59 | 0.90 |
+--------+---------+-------------+------+