sql >> Databáze >  >> RDS >> Mysql

Získejte výsledky dotazu pro časové období

Nejsem s tímto řešením nijak zvlášť spokojen, ale dělá to, co má dělat:Co v podstatě dělám, je procházet intervalem vstupního data a vytvářet dynamický řetězec dotazu.
Moje aplikace vždy omezuje požadované datum/čas interval na @maximum 1 měsíc, takže řetězec dotazu by nikdy neměl překročit limit maximálního řetězce.
Nejsem 100% o výkonu, uvidíme, jak to bude fungovat.

//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. Jak získat počet ovlivněných řádků při provádění dotazu MySQL z bash?

  2. Jarní přechod zabezpečení na autentizaci Ldap a databázová oprávnění

  3. MySQL:Je možné „naplnit“ SELECT hodnotami bez tabulky?

  4. Změna formátu zobrazení pole data a času v MySQL PHP