2015-04-06 5 views
1

У меня есть столбец в БД с размером DATETIME и с форматом yyyy-mm-dd hh:mm:ss. Тем не менее, в качестве информации мне дается только дата (и меня не волнует время). Итак, как я должен запросить БД для поиска этого столбца только по дате, хотя значение содержит как дату, так и время?Запросить столбец DB DATETIME только по дате

Update:

Вот PHP-код, где я пытаюсь выбрать объекты:

public static function getTripsWithDrivers($route_from = null, $route_to = null, $date = null) 
{ 
    $trips = Trip::whereRouteFrom($route_from)->whereRouteTo($route_to)->whereStartDate($date); 
    ... 
} 
+0

Лучшим решением будет 'BETWEEN date1 AND date2', где' date1' будет со временем '00: 00: 00' и' date2' со временем '23: 59: 59'. Это будет использовать индекс в поле, если он у вас есть. Функция 'DATE (date)' не будет использовать индекс. –

ответ

2

Используйте MySql date функции :

$trips = Trip::where(DB::raw('DATE(route_from)'), '=', $route_from) 
      ->where(DB::raw('DATE(route_to)'), '=', $route_to) 
      ->where(DB::raw('DATE(start_date)'), '=', $date) 
+0

Подсказка: это не будет использовать какой-либо индекс, используемый в поле даты. –

1

пользователя, где фильтр в следующем:

WHERE "datetime column" like '2015-04-06%' 
Смежные вопросы