Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận kết quả truy vấn cho phạm vi ngày

Tôi không đặc biệt hài lòng với giải pháp này, nhưng nó thực hiện những gì nó phải làm:Về cơ bản, những gì tôi làm là lặp lại khoảng ngày đầu vào và tạo một chuỗi truy vấn động.
Ứng dụng của tôi luôn giới hạn ngày / giờ được yêu cầu khoảng thời gian đến @maximum 1 tháng, do đó, chuỗi truy vấn không bao giờ được vượt quá giới hạn chuỗi tối đa.
Tuy nhiên, tôi không hiểu rõ 100% về hiệu suất, chúng ta sẽ xem cách thức hoạt động.

//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. Cách tạo và sử dụng chế độ xem MySQL

  2. Tôi có thể tham số hóa tên bảng trong một câu lệnh đã soạn sẵn không?

  3. Ví dụ về LOCALTIMESTAMP - MySQL

  4. org.json.JSONException:Giá trị <br của loại java.lang. Chuỗi không thể được chuyển đổi thành JSONObject

  5. Lỗi PHP:Đã đạt đến mức lồng chức năng tối đa là '100', đang hủy