【问题标题】:Laravel Where Between DatesLaravel 日期之间的位置
【发布时间】:2016-05-06 12:09:40
【问题描述】:

我有一个表格,它为用户收集简单的日期时间和日期时间。

我正在使用 laravel 输出 indate_time 在特定日期范围之间的行。

From Date: 2016/01/28
To Date: 2016/01/28

我的表中的示例条目

ID | indate_time          | outdate_time
1  | 2016-01-28 21:22:49  | 2016-01-28 21:46:05

目前我没有得到回应这是我的 laravel 查询

$from = '2016/01/28';
$to = '2016/01/28';
$id = 1;

        $attendance = DB::table('attendances')
        ->whereBetween('indate_time', array($from, $to))->where('id', $id)->orderBy('indate_time', 'desc')
        ->get();

【问题讨论】:

  • 您的新日期时间将得到2016-01-28 00:00:00 那么indate_time 怎么能介于两者之间呢?
  • 您在比较日期时间值,而不仅仅是日期。如果您只关心日期,那么您需要明确告诉 mysql。因为2016-01-28 23:59:59 是同一个日期,但在特定时间范围之外。
  • 谢谢@MarcB 我将如何为 laravel 查询指定超出日期时间的日期?对不起
  • $from = new \DateTime("now"); $to = new \DateTime("now"); $to->setTime(23, 59, 59);

标签: php laravel laravel-5 eloquent


【解决方案1】:

我可以推荐你使用 Carbon 然后你可以这样做:

在你的模型中

public function getDaysUntilDeadlineAttribute()
{   
    return Carbon\Carbon::now()->startOfDay()->diffInDays($this->outdate_time, false); // if you are past your deadline, the value returned will be negative.  
}

然后在你看来:

$model->days_until_deadline

记得在顶部添加use Carbon;

【讨论】:

    【解决方案2】:

    在您的代码中,您正在比较格式错误的日期。

    您的日期如下

    $from = '2016/01/28';
    $to = '2016/01/28';
    

    db中的日期格式是

     ID | indate_time          | outdate_time
     1  | 2016-01-28 21:22:49  | 2016-01-28 21:46:05
    

    现在只需将 $from 和 $to 日期格式更改为

     $from = '2016-01-28 12:14:07';
     $to = '2016-01-28 09:03:23';
    

    现在您可以使用上述值编写查询。

    如果有匹配的行将被显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2016-08-15
      相关资源
      最近更新 更多