sql >> Databasteknik >  >> RDS >> Mysql

Tidsintervall - Kontrollera efter veckodag och tid på dygnet i mysql

EDIT - Ändrad för att uppfylla kriterier (sluttid) specificerade i kommentarer:

Jag tror att det du vill göra är att lagra varje dags pris separat. Lagra minst ett värde med den sista minuten av en viss dag som ett slutgiltigt samlat pris (detta kommer att vara den enda raden för dagar med ett enda pris hela dagen). Vid vilken dag/tid som helst, se bara den här tabellen för att bestämma den givna hastigheten för den tidsperioden. Se nedan:

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

Med tanke på dessa data, följande fråga:

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

Returnerar resultatuppsättningen för den specifika körningstiden:

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


  1. Kan PostgreSQL ha en unik begränsning för arrayelement?

  2. Hur laddar jag in en lokal .SQL-fil i MySQL?

  3. Datasynkronisering mellan MySQL och MongoDB

  4. Hur man konfigurerar AppArmor för MySQL-baserade system (MySQL/MariaDB Replication + Galera)