【问题标题】:Sorting data order by duration between start_date and end_date按 start_date 和 end_date 之间的持续时间排序数据顺序
【发布时间】:2021-02-02 03:06:02
【问题描述】:

我正在使用 Laravel 7。我有一个名为 assistants 的表,其中有一些列,而这两列:

- 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');
 ;

我该怎么做?

【问题讨论】:

    标签: laravel laravel-7


    【解决方案1】:

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

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

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

    请在你的班级也use DB;

    【讨论】:

    • 选择是 ASC 还是 DESC 我使用 orderByRaw ->orderByRaw(DB::raw("DATEDIFF(start_date, end_date) desc"))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2014-10-14
    • 1970-01-01
    相关资源
    最近更新 更多