Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Timespan - Kiểm tra ngày trong tuần và thời gian trong ngày trong mysql

EDIT - Đã sửa đổi để đáp ứng tiêu chí (thời gian kết thúc) được chỉ định trong nhận xét:

Tôi tin rằng những gì bạn muốn làm là lưu trữ tỷ giá mỗi ngày một cách riêng biệt. Lưu trữ ít nhất một giá trị với tỷ lệ tổng hợp tất cả vào phút cuối cùng của một ngày nhất định (đây sẽ là hàng duy nhất cho các ngày có một tỷ lệ duy nhất cả ngày). Tại bất kỳ ngày / giờ nhất định nào, chỉ cần tham khảo bảng này để xác định tỷ lệ nhất định cho khoảng thời gian đó. Xem bên dưới:

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

Với dữ liệu này, truy vấn sau:

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

Trả về tập kết quả cho thời gian thực thi cụ thể:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chỉ chọn ngày từ trường DATETIME trong MySQL?

  2. Làm cách nào để đặt số hàng tối đa trong bảng MySQL?

  3. LỖI 1067 (42000):Giá trị mặc định không hợp lệ cho 'end_time'

  4. Gặp sự cố về múi giờ với PHP và MySQL

  5. MySQL - Làm thế nào để chạy nhiều truy vấn cập nhật trong một dòng?