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

MySQL bagaimana cara mengisi tanggal yang hilang dalam rentang?

MySQL tidak memiliki fungsi rekursif, jadi Anda tinggal menggunakan trik tabel ANGKA -

  1. Buat tabel yang hanya menampung angka yang bertambah - mudah dilakukan menggunakan peningkatan_otomatis:

    DROP TABLE IF EXISTS `example`.`numbers`;
    CREATE TABLE  `example`.`numbers` (
      `id` int(10) unsigned NOT NULL auto_increment,
       PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
  2. Isi tabel menggunakan:

    INSERT INTO `example`.`numbers`
      ( `id` )
    VALUES
      ( NULL )
    

    ...untuk nilai sebanyak yang Anda butuhkan.

  3. Gunakan DATE_ADD untuk membuat daftar tanggal, menambah hari berdasarkan nilai NUMBERS.id. Ganti "06-06-2010" dan "06-06-14" dengan tanggal mulai dan berakhir masing-masing (tetapi gunakan format yang sama, YYYY-MM-DD) -

    SELECT `x`.*
      FROM (SELECT DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY)
              FROM `numbers` `n`
             WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` -1 DAY) <= '2010-06-14' ) x
    
  4. KIRI GABUNG ke tabel data Anda berdasarkan porsi waktu:

       SELECT `x`.`ts` AS `timestamp`,
              COALESCE(`y`.`score`, 0) AS `cnt`
         FROM (SELECT DATE_FORMAT(DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY), '%m/%d/%Y') AS `ts`
                 FROM `numbers` `n`
                WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY) <= '2010-06-14') x
    LEFT JOIN TABLE `y` ON STR_TO_DATE(`y`.`date`, '%d.%m.%Y') = `x`.`ts`
    

Jika Anda ingin mempertahankan format tanggal, gunakan Fungsi DATE_FORMAT :

DATE_FORMAT(`x`.`ts`, '%d.%m.%Y') AS `timestamp`


  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 cara melakukan penyisipan batch di MySQL

  2. Menggunakan Otomatisasi untuk Mempercepat Tes Rilis di Galera Cluster Dengan ClusterControl

  3. Perbarui Data di Database MySQL

  4. Cara membangun Rest API dengan Spring Boot menggunakan MySQL dan JPA

  5. Pernyataan kasus di MySQL