En mi base de datos creadted_at data 2017-11-07 18:58:16,2017-11-07 19:58:16. Intento usar WhereBetween para buscar datos en la fecha 2017-11-07 No estoy seguro ¿Cómo puedo poner Like % % en mi consulta

 'like', '%'.2017-11-07.'%'

 ->WhereBetween('created_at', ['2017-11-07', '2017-12-07'])

Aquí está mi controlador completo

  $b = DB::table("v_dealer_sell_time")
             ->select([
                    'product_name',
                    DB::raw('COALESCE(SUM(total_price), 0) AS total_price'),
                    DB::raw('COALESCE(SUM(total_product), 0) AS total_product')
                    ])
            ->WhereBetween('created_at', ['2017-11-07', '2017-11-07'])
            ->groupBy('product_name')
            ->get();
0
user8663822 18 oct. 2017 a las 18:21

3 respuestas

La mejor respuesta

Si desea los creados en la misma fecha dada, puede usar whereDate de esta manera, pero desde 5.3 (Documentación):

$b = DB::table("v_dealer_sell_time")
             ->select([
                    'product_name',
                    DB::raw('COALESCE(SUM(total_price), 0) AS total_price'),
                    DB::raw('COALESCE(SUM(total_product), 0) AS total_product')
                    ])
            ->WhereDate('created_at', '=', $date)
            ->groupBy('product_name')
            ->get();

Si lo desea entre dos fechas, use whereBetween de esta manera:

$b = DB::table("v_dealer_sell_time")
             ->select([
                    'product_name',
                    DB::raw('COALESCE(SUM(total_price), 0) AS total_price'),
                    DB::raw('COALESCE(SUM(total_product), 0) AS total_product')
                    ])
            ->WhereBetween('created_at', [Carbon::parse('2017-11-07')->startOfDay(), Carbon::parse('2017-12-07')->endOfDay()])
            ->groupBy('product_name')
            ->get();

PD: No olvides agregar use Carbon\Carbon; en la parte superior de tu Controlador.

1
Maraboc 18 oct. 2017 a las 15:38

Si esta búsqueda de fecha se relaciona con una función de búsqueda, entonces tiene que hacer algo como esto


Código

Cambia esto a

->WhereBetween('created_at', ['2017-11-07', '2017-11-07'])

Éste

->WhereBetween('created_at', ['2017-11-07 00:00:00', '2017-11-07 23:59:59'])

¿POR QUÉ?

2017-11-07 00:00:00 - Comienzo del día
2017-11-07 23:59:59 - fin del día


si usa tosql() y verifica su consulta, tiene algo como esto

.`created_at` between ? and ? "
1
Abdulla Nilam 18 oct. 2017 a las 15:35

Utilice whereDate():

$date = Carbon::parse($date)->toDateString();
....
->whereDate('created_at', $date)

O whereBetween():

$date = Carbon::parse($date);
$from = $date->copy()->startOfDay();
$to = $date->copy()->endOfDay();
....
->whereBetween('created_at', [$from, $to])
1
Alexey Mezenin 18 oct. 2017 a las 15:26