Между двумя (2) датами в формате даты для столбца (Y-m-d) - PullRequest
0 голосов
/ 10 мая 2019

Итак, у меня есть этот код в качестве пост-запроса, который собирает $start_date & $end_date

$start_date = date("Y-m-d",strtotime($request->start_date));


$end_date = date("Y-m-d",strtotime($request->end_date));

, и у меня есть этот запрос, чтобы получить все записи между двумя (2) датами

$date_time_records = DateTimeAPI::select('ACNo','datetime','state','deviceID','status')
        ->whereBetween('datetime', [$start_date, $end_date])
        ->get();

Но проблема в следующем:

Формат поля datetime в mysql - (Y-m-d h:i:s)

Я пытаюсь сопоставить диапазон дат иполе datetime в том же формате.

Вот так ('Y-m-d')

Запрос на выборку работает нормально, если start_date и end_date отформатированы как (Y-m-d h:i:s).Но то, что мне нужно только (Y-m-d)

Ответы [ 4 ]

4 голосов
/ 14 мая 2019

Вы также можете использовать

$query->whereDate('datetime', '>=', $start_date)->whereDate('datetime', '<=', $end_date);
2 голосов
/ 10 мая 2019

Ларавел 5

Используйте ->whereDateBetween() вместо ->whereBetween()

->whereDateBetween('datetime', [$start_date, $end_date])

2 голосов
/ 10 мая 2019

измени свой код

$start_date = date("Y-m-d H:i:s",strtotime($request->start_date));
$end_date = date("Y-m-d H:i:s",strtotime($request->end_date));

или используя углерод

use Carbon\Carbon;
Carbon::parse($start_date)->format('Y-m-d H:i:s');
Carbon::parse($end_date)->format('Y-m-d H:i:s');
1 голос
/ 10 мая 2019

Как вы уже упоминали,

your mysql column is of format - Y-m-d h:i:s
and format in date range variable is - Y-m-d.

Итак, вы можете использовать DATE() функцию MYSQL и реализовать в вашем запросе, как показано ниже

$date_time_records = DateTimeAPI::select('ACNo','datetime','state','deviceID','status')
    ->whereBetween('DATE(datetime)', [$start_date, $end_date])
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...