DB位于两个日期列之间

时间:2014-12-09 13:38:36

标签: mysql date laravel

我想在Laravel 42中检索两个日期列之间的记录。

Model::where('created_at', '<=', 'created_at' + 5 days)->get();

我有一个created_at列。我需要检索created_atcreated_at + 5天之间的所有记录。

我使用此方法添加有效的天date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . '+5 days'));。但我无法做到我想做的事。

至少可以吗?如果是,我该怎么做?

提前致谢!

2 个答案:

答案 0 :(得分:2)

如果你想做原始SQL,那么你需要DB::raw()

但是,根据我是否正确理解您的问题,以下内容可能对您有用:

$now = \Carbon\Carbon::now();
$inFiveDays = \Carbon\Carbon::now()->addDays(5);
Model::where('created_at', '>', $now)->where('created_at', '<=', $inFiveDays)->get();

使用DB::raw()并使用原始SQL执行此操作:

Model::whereRaw('created_at BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY');

无论如何都是这样的。

答案 1 :(得分:0)

我还没有找到任何方法来使用SQL,所以我找到了这个解决方案:

$posts      = Posts::all();

foreach ( $posts as $key => $post )
    if ( strtotime($post->created_at . '+5 days') < time() )
        unset( $posts[$key] );

我在这里做的是迭代整个对象数组。一旦我发现记录不符合我的时间限制,我就会从数组中删除它。