sql >> データベース >  >> RDS >> Mysql

タイムスパン-mysqlで平日と時刻を確認します

    編集-コメントで指定された基準(終了時間)を満たすように変更:

    あなたがやりたいのは、毎日のレートを別々に保存することだと思います。最終的なキャッチオールレートとして、特定の日の最後の分を含む少なくとも1つの値を格納します(これは、1日中単一のレートを持つ日の唯一の行になります)。任意の日時で、この表を参照して、その期間の特定のレートを決定してください。以下を参照してください:

    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
    

    このデータを前提として、次のクエリ:

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

    特定の実行時間の結果セットを返します:

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


    1. MySQL外部キー、テーブルを作成できません(errno:150)

    2. なぜこれは7日前からデータを取得しないのですか?

    3. Macはターミナルを使用してmysqlをインストールして開きます

    4. AndroidからMySQLデータベースに接続する