我有两个日期变量$to
和$from
。
$from = '2016-06-01';
$to = '2016-06-20';
我正在使用whereBetween
在两个日期之间进行搜索。
如果我选择例如6月1日到6月20日,它只显示从1日到19日的记录。如何在搜索中包含第20个?
以下是我的where子句的示例:
->whereBetween('CompletedDate', array($fromDate, $toDate))
答案 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;