在两(2)个日期之间,日期格式为(Y-m-d)列

时间:2019-05-10 10:18:42

标签: php mysql laravel eloquent

因此我将这段代码作为收集$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();

但是问题是:

mysql中datetime的字段格式为(Y-m-d h:i:s)

我要做的是将日期范围和字段datetime匹配为相同格式。

赞这个('Y-m-d')

如果start_dateend_date的格式设置为(Y-m-d h:i:s),则select查询可以正常工作。但是我只需要(Y-m-d)

4 个答案:

答案 0 :(得分:4)

您也可以使用

$query->whereDate('datetime', '>=', $start_date)->whereDate('datetime', '<=', $end_date);

答案 1 :(得分:2)

更改代码

$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');

答案 2 :(得分:2)

Laravel 5

->whereDateBetween()上使用->whereBetween()

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

答案 3 :(得分:1)

您已经提到

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

因此,您可以使用MYSQL的DATE()函数并按如下所示在查询中实现

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