按开始日期和结束日期之间的持续时间对数据顺序进行排序

时间:2020-10-19 10:37:22

标签: laravel laravel-7

我正在使用Laravel7。我有一个名为aids witch的表,其中有一些列和这两列:

- start_date
- end_date

我想按开始日期和结束日期之间的持续时间对数据顺序进行排序:

 $query = Assistance::join('users', 'assistances.user_id', '=', 'users.id')
        ->select('assistances.*')
        ->orderBy('duration between start_date and end_date');
 ;

我该怎么做?

1 个答案:

答案 0 :(得分:2)

请尝试以下操作-请记住,这效率不高

DATEDIFF返回两个日期之间的日期。您可能还想使用TIMESTAMPDIFF,它接受​​第一个参数(例如“ hour”),以便您获得更精细的控制

$query = Assistance::join('users', 'assistances.user_id', '=', 'users.id')
        ->select('assistances.*')
        ->orderBy(DB::raw('DATEDIFF(start_date, end_date)'))
        ->get();

也请use DB;在您的课程中。