按持续时间 start_date 和 end_date 之间的数据顺序排序

Sorting data order by duration between start_date and end_date

我正在使用 Laravel 7。我有一个 table 命名的辅助 有一些列和这两列:

- start_date
- end_date

我想根据 start_date 和 end_date 之间的 持续时间 对数据进行排序:

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

我该怎么做?

请尝试以下操作 - 请记住,这不是非常有效

DATEDIFF returns 两个日期之间的天数。您可能还想使用 TIMESTAMPDIFF,它接受第一个参数,例如 'hour',您可以在其中获得更精细的控制

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

也请在您的 class 中 use DB;