Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Timepan - Periksa hari kerja dan waktu di mysql

EDIT - Dimodifikasi untuk memenuhi kriteria (waktu berakhir) yang ditentukan dalam komentar:

Saya yakin apa yang ingin Anda lakukan adalah menyimpan tarif setiap hari secara terpisah. Simpan setidaknya satu nilai dengan menit terakhir pada hari tertentu sebagai tarif tangkapan-semua akhir (ini akan menjadi satu-satunya baris untuk hari-hari dengan tarif tunggal sepanjang hari). Pada hari/waktu tertentu, lihat tabel ini untuk menentukan tarif yang diberikan untuk jangka waktu tersebut. Lihat di bawah:

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

Mengingat data ini, kueri berikut:

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

Mengembalikan hasil untuk waktu eksekusi tertentu:

+--------+---------+-------------+------+
| 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. Ganti Nilai Null Default yang Dikembalikan Dari Gabung Luar Kiri

  2. PILIH dengan variabel kueri tidak menggunakan INDEXes

  3. Bagaimana cara mendapatkan zona waktu MySQL saat ini?

  4. Mengatur variabel Big Query seperti mysql

  5. mysqli_affected_rows untuk UPDATE terkadang mengembalikan 0 pada kecocokan baris penuh