Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uzyskaj wyniki zapytania dla zakresu dat

Nie jestem szczególnie zadowolony z tego rozwiązania, ale robi to, co powinno:Zasadniczo robię pętlę przez interwał daty wejściowej i tworzenie dynamicznego ciągu zapytania.
Moja aplikacja zawsze ogranicza żądaną datę / godzinę interwał do @maksimum 1 miesiąc, więc ciąg zapytania nigdy nie powinien przekraczać maksymalnego limitu ciągu.
Nie jestem jednak w 100% zadowolony z wydajności, zobaczymy, jak to działa.

//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. Jak przechowywać dane w Unicode w języku hindi?

  2. Bawić się! Framework 1.2.4 --- Ustawienia C3P0, aby uniknąć awarii łącza komunikacyjnego do czasu bezczynności

  3. MySQL INSERT INTO table VALUES.. vs INSERT INTO table SET

  4. Zamień wartości klucza podstawowego MySQL

  5. Jak pracować z javax.persistence.sql-load-script-source?