Mysql
 sql >> Base de données >  >> RDS >> Mysql

Timespan - Vérifiez le jour de la semaine et l'heure de la journée dans mysql

EDIT - Modifié pour répondre aux critères (heure de fin) spécifiés dans les commentaires :

Je crois que ce que vous voudrez faire est de stocker le taux de chaque jour séparément. Stockez au moins une valeur avec la dernière minute d'un jour donné comme taux fourre-tout final (ce sera la seule ligne pour les jours avec un seul taux toute la journée). À n'importe quel jour/heure, il suffit de consulter ce tableau pour déterminer le taux donné pour cette période de temps. Voir ci-dessous :

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

Compte tenu de ces données, la requête suivante :

SELECT *
FROM
    tRate
WHERE
    rateDay = @execDay
    and @execTime < rateEndTime
;

Renvoie le jeu de résultats pour l'heure d'exécution particulière :

+--------+---------+-------------+------+
| rateId | rateDay | rateEndTime | rate |
+--------+---------+-------------+------+
|      5 |       1 | 23:59:59    | 0.90 |
+--------+---------+-------------+------+