Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

xfirebg's avatar

Get current date records from table with different time zone

Hello! :) I`m tring hole day

When user load the page it need to gives him records for the current day.

For example from 00:00:00 to now.

The problem is that the controller is asking the DB to give records from 00:00:00 in UTC, after this my model(in the link above) parsing it to LOCAL time.

This local time is Europe/Sofia (+3 hours), causing to miss 3 records from today starting with 03:00:00.

The same happens after user pick a date in the form.

Any idea how to fix it?

The controller:

 function getdata_chart(Request $request)
      {
        $start_date = date('d-m-Y 00:00:00');
        $end_date = date('d-m-Y 23:59:59');
        if($request->start_date != '' && $request->end_date != '')
        {
          // if user fill dates
          $dateScope = array($request->start_date ." 00:00:00", $request->end_date ." 23:59:59");
        } else {
          // default load page - today
          $dateScope = array($start_date, $end_date);
        };
        $students = MeasCanal::whereBetween('recordtime', $dateScope)
      ->selectRaw('recordtime')
      ->selectRaw('max(formattedvalue) filter (where fullname = \'Данни.Кота\') as iazovir')
      ->selectRaw('max(formattedvalue) filter (where fullname = \'Данни.Температура\') as temperatura350')
      ->where(function ($query) {
        $query->where('fullname', 'like', "Язовир.Данни.Кота")
              ->orWhere('fullname', 'like', "ГСК_11_350.Данни.Температура");
      })
      ->groupBy('recordtime')
      ->orderBy('recordtime')
      ->get();

        return response()->json($students);

      }
    return response()->json($students);
}

The model:

class MeasCanal extends Model
{
  protected $connection = 'MeasCanal';
  protected $table = 'meas_kanal';
  protected $fillable = ['fullname','formattedvalue','recordtime','qualitydesc','statedesc','id'];


  /**
       * Get the user's recordtime.
       *
       * @param  string  $value
       * @return string
       */
      public function getRecordtimeAttribute($value)
      {
              return Carbon::parse($value)->timezone('Europe/Sofia')->toDateTimeString();

      }
}

I'm not 100% sure but the last comment in github may be the fix that I looking for?: https://github.com/laravel/framework/issues/19737

0 likes
1 reply
xfirebg's avatar

why no replies? Do I need to edit my question?

Please or to participate in this conversation.