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

Dapatkan hasil kueri untuk rentang tanggal

Saya tidak terlalu puas dengan solusi ini, tetapi solusi ini melakukan apa yang seharusnya dilakukan:Yang pada dasarnya saya lakukan adalah mengulang interval tanggal input dan membuat string kueri dinamis.
Aplikasi saya selalu membatasi tanggal/waktu yang diminta interval ke @maksimum 1 bulan, jadi string kueri tidak boleh melebihi batas string maksimal.
Saya tidak 100% tentang kinerjanya, kita akan melihat bagaimana hasilnya.

//Calculate the recurrent dates 
$query = $query->join('events_dates_recurrent', 'events.id', '=', 'events_dates_recurrent.event_id')
    ->where(function($join) use ($input_date_start, $input_date_end) { 
        //Create a dynamic query to get all recurrent dates within the input time interval 
        $query_string = "ABS(DATEDIFF('" . $input_date_start . "', CAST(events_dates_recurrent.start_date AS DATE)) % events_dates_recurrent.repeat_interval) = 0"; 
        $temp_date_start = $input_date_start; 

        while(strtotime($temp_date_start) <= strtotime($input_date_end)){ 
            $temp_date_start = date('Y-m-d',strtotime($temp_date_start . " +1 day")); 
            //Create a raw query string 
            $query_string = $query_string . " OR ABS(DATEDIFF('" . $temp_date_start . "', CAST(events_dates_recurrent.start_date AS DATE)) % events_dates_recurrent.repeat_interval) = 0"; 
        } 
        $join->whereRaw($query_string); 
    }); 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara melewatkan beberapa kolom ke variabel di php

  2. perbarui beberapa baris menggunakan batas di mysql?

  3. Bagaimana cara LEFT JOIN dengan lebih dari 2 tabel?

  4. Panjang DECIMAL untuk waktu mikro (benar)?

  5. mysql menggabungkan kunci unik