LaravelでのDATEDIFF関数を使用した時間差のクエリビルダー


  1. 単純なDATEDIFFの使用例:

    $startDate = '2024-02-01 10:00:00';
    $endDate = '2024-02-02 12:00:00';
    $diffInHours = DB::table('table_name')
    ->select(DB::raw('DATEDIFF(hour, ? , ?) as diff_in_hours'))
    ->setBindings([$startDate, $endDate])
    ->value('diff_in_hours');
    echo $diffInHours;
  2. WHERE句と組み合わせた例:

    $startDate = '2024-02-01 10:00:00';
    $endDate = '2024-02-02 12:00:00';
    $maxHourDifference = 24;
    $results = DB::table('table_name')
    ->select('*')
    ->whereRaw('DATEDIFF(hour, column_name, ?) <= ?', [$startDate, $maxHourDifference])
    ->whereRaw('DATEDIFF(hour, column_name, ?) >= ?', [$endDate, -$maxHourDifference])
    ->get();
    foreach ($results as $result) {
    // 結果の処理
    echo $result->column_name;
    }
  3. クエリビルダーのスコープを使用した例:

    class YourModel extends Model
    {
    public function scopeHourDifference($query, $startDate, $endDate, $maxHourDifference)
    {
        return $query->whereRaw('DATEDIFF(hour, column_name, ?) <= ?', [$startDate, $maxHourDifference])
                     ->whereRaw('DATEDIFF(hour, column_name, ?) >= ?', [$endDate, -$maxHourDifference]);
    }
    }
    // 使用例:
    $startDate = '2024-02-01 10:00:00';
    $endDate = '2024-02-02 12:00:00';
    $maxHourDifference = 24;
    $results = YourModel::hourDifference($startDate, $endDate, $maxHourDifference)->get();
    foreach ($results as $result) {
    // 結果の処理
    echo $result->column_name;
    }

これらの例は、LaravelでDATEDIFF関数を使用して時間差のクエリを作成するための基本的な方法を示しています。必要に応じて、テーブル名やカラム名を適切に置き換えて使用してください。また、必要に応じてほかのクエリビルダーのメソッドや条件を追加することもできます。