Laravel whereBetween issue,错误记录返回

时间:2016-06-23 10:58:30

标签: laravel

我有两个日期变量$to$from

$from = '2016-06-01';
$to = '2016-06-20';

我正在使用whereBetween在两个日期之间进行搜索。 如果我选择例如6月1日到6月20日,它只显示从1日到19日的记录。如何在搜索中包含第20个?

以下是我的where子句的示例:

 ->whereBetween('CompletedDate', array($fromDate, $toDate))

2 个答案:

答案 0 :(得分:2)

问题是SQL服务器如此读取这些日期......

$from = '2016-06-01 00:00:00';
$to = '2016-06-20 00:00:00';

如果您想要包含最新日期,则需要相应地更新这些日期......

$from = '2016-06-01 00:00:00';
$to = '2016-06-20 23:59:59';

如果您使用的是日期选择器,则适用相同的原则。你的逻辑可能看起来像以下......

$fromDate = new DateTime(strtotime('2016-06-01'));
$toDate = new DateTime(strtotime('2016-06-20'));

... ->whereBetween('CompletedDate', array($fromDate->format('Y-m-d 00:00:00'), $toDate->format('Y-m-d 23:59:59')));

答案 1 :(得分:0)

使用碳

使用Carbon可以更好地处理日期。

我为你想出了一个小片段:

<?php
public function index()
{
    $from = Carbon::parse('2016-06-01')->startOfDay();
    $to = Carbon::parse('2016-06-20')->endOfDay();
    $users = User::whereBetween('created_at', [$from, $to])->get();
}

别忘了导入Carbon:

use Carbon\Carbon;