2015-07-12 91 views
3

我有一个bookedstartend列作为日期戳;查看日期范围是否在Laravel 5之间

我知道,这

$start = "2015-07-12 01:00:00"; 
$end = "2015-07-12 02:00:00"; 

$users = DB::table('booked') 
        ->whereBetween('start', [$start, $end])->get(); 

检查在start列内$落在任何日期开始和结束$。

我想要的其实是另一种方式。

我很难检查book表中startend列中的$ start和$ end date变量发生的情况。

+1

你是什么意思的“另一种方式”?开始日期超出给定开始/结束范围的记录? –

+0

我的理解是,上面的查询检查起始列是否在$ start和$ end之间。我想知道的是$ start和$ end是否落在列'start'和'end'之间。 – shaNnex

回答

0

下面的查询会给你所有的记录进行开始和结束的$之间开始和$结束

$users = DB::table('booked') 
    ->where('start', '>=', $start) 
    ->where('start', '<=', $end) 
    ->where('end', '>=', $start) 
    ->where('end', '<=', $end); 
4
// make sure $from is before $till, because they are probably provided as input 
$from = min($start, $end); 
$till = max($start, $end); 

// then simply 
DB::table('booked') 
    ->where('start', '<=', $from) 
    ->where('end', '>=', $till) 
    ->get(); 

它将返回行匹配包含在start-end$from-$till期:

start      end 
     |------------------------| 
     |----------------| 
     $from   $till 
相关问题