sql >> Database teknologi >  >> RDS >> Mysql

Tidsrum - Tjek for ugedag og tidspunkt på dagen i mysql

EDIT - Ændret for at opfylde kriterier (sluttidspunkt) angivet i kommentarer:

Jeg tror, ​​at det, du vil gøre, er at gemme hver dags pris separat. Gem mindst én værdi med det sidste minut af en given dag som en endelig opsamlingspris (dette vil være den eneste række for dage med en enkelt sats hele dagen). På en hvilken som helst given dag/tid skal du blot konsultere denne tabel for at bestemme den givne hastighed for den pågældende tidsperiode. Se nedenfor:

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
 

På baggrund af disse data, følgende forespørgsel:

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

Returnerer resultatsættet for den bestemte udførelsestid:

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

  1. Flere relationer mellem to enheder, er dette god praksis?

  2. Hvordan fremskyndes oprettelsen af ​​MySQL-tabel fra stor CSV-fil?

  3. Sådan tilføjes en separator til en sammenkædet streng i MySQL – CONCAT_WS()

  4. MySQL-kolonneantal stemmer ikke overens med værdiantallet i række 1