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

MySQL dibagi berdasarkan rentang waktu

Anda memerlukan sumber baris dengan semua waktu yang Anda inginkan untuk dikembalikan. Kemudian Anda dapat menggunakan operasi GABUNG untuk memilih baris yang akan dikembalikan.

Jika Anda memiliki tabel seperti ini:

CREATE TABLE cal (tm TIME NOT NULL PRIMARY KEY) ENGINE=InnoDB ;
INSERT INTO cal (tm)  VALUES ('00:00:00'),('00:30:00');
INSERT INTO cal (tm) SELECT ADDTIME(tm,'01:00:00') FROM cal;
INSERT INTO cal (tm) SELECT ADDTIME(tm,'02:00:00') FROM cal;
INSERT INTO cal (tm) SELECT ADDTIME(tm,'04:00:00') FROM cal;
... 

Kemudian Anda dapat menggunakannya dalam kueri Anda:

SELECT v.id
     , c.tm
  FROM myview v
  JOIN cal c
    ON c.tm >= v.hour_from
   AND c.tm <= v.hour_to
 ORDER BY v.id, c.tm

Jika Anda menginginkan nilai waktu dalam format tertentu, Anda dapat menggunakan DATE_FORMAT fungsi:

SELECT v.id
     , DATE_FORMAT(c.tm,'%H:%i') AS hour_

Ini mengasumsikan bahwa nilai yang dikembalikan oleh tampilan adalah TIME tipe data. Jika tidak, Anda ingin mengonversinya. (Atau Anda bisa mendapatkan hasil yang sama bekerja dengan string karakter dalam format kanonik.)

CATATAN:Anda tidak wajib memiliki tabel; itu bisa berupa sumber baris apa pun, seperti tampilan sebaris. Anda hanya perlu cukup baris (dalam kasus Anda, dengan asumsi kenaikan setengah jam dari 00:00 sampai 23:30, itu 48 baris.)

Jika Anda memiliki rentang waktu yang "melintasi" batas tengah malam (mis. 22:00 hingga 02:00), kueri contoh tidak akan mengembalikan baris apa pun. Anda perlu melakukan penyesuaian.

Sesuatu seperti:

 JOIN cal c
   ON ( t.hour_from <= t.hour_to 
      AND c.tm >= v.hour_from
      AND c.tm <= v.hour_to
      )
   OR ( t.hour_from > t.hour_to 
      AND (   c.tm <= v.hour_from
          OR  c.tm >= v.hour_to
          )
      )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa driver mysql yang saya gunakan dengan spring/hibernate?

  2. Bagaimana cara agar UTF-8 berfungsi di aplikasi web Java?

  3. mysql_fetch_array mengembalikan data duplikat

  4. Cara menghapus teks antara 2 karakter menggunakan kueri di MYSQL

  5. Menghapus duplikat dari tabel besar