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

MySQL GROUP BY dan Isi Baris Kosong

Dalam jawaban ini saya akan menjelaskan cara membuat tabel kalender Anda.

Buat tiga tabel untuk hari, jam, dan menit:

CREATE TABLE days (
  day DATE,
  PRIMARY KEY (day)
) 
CREATE TABLE hours (
  hour INT,
  PRIMARY KEY (hour)
) 
CREATE TABLE minutes (
  minute INT,
  PRIMARY KEY (minute)
) 

Isi tabel jam dengan angka dari 0 sampai 23 dan tabel menit dengan angka dari 0 sampai 59. Untuk mengisi tabel hari, Anda dapat membuat prosedur seperti berikut:

CREATE PROCEDURE make_days(IN start_date DATE, IN end_date DATE)
BEGIN
  DECLARE curr_date DATE;
  SET curr_date = start_date;
  WHILE curr_date <= end_date DO
    INSERT IGNORE INTO days(day)  VALUES(curr_date);
    SET curr_date = DATE_ADD(curr_date, INTERVAL 1 DAY);
  END WHILE;
END

Anda kemudian dapat memanggil prosedur ini untuk membuat hari seperti ini:

CALL make_days('2011-01-01','2012-12-31');

Sekarang Anda dapat membuat nilai untuk setiap menit dalam interval waktu tertentu menggunakan kueri yang mirip dengan berikut:

SELECT YEAR(day) AS year, MONTH(day) AS month, DAYOFMONTH(day) AS day, hour, minute
FROM days, hours, minutes
WHERE CAST(CONCAT(day,' ',hour,':',minute) AS DATETIME) BETWEEN '2011-08-31 22:00' AND '2011-09-01 10:00'
ORDER BY year, month, day, hour, minute


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menggunakan enkripsi data transparan dengan MySQL?

  2. Cara Menginstal MySQL di Debian 7

  3. Bagaimana cara menghubungkan satu tabel ke banyak tabel yang berbeda?

  4. sql menarik baris untuk baris berikutnya atau sebelumnya dari baris saat ini

  5. Ganti nilai nulls di sql menggunakan pernyataan pilih di mysql?