2017-03-18 12 views
0

かいつまん内のレコードとは異なります。Laravelの日時は、データベースから返された同じデータベース

public function betweenDate($startDate,$startTime,$endDate,$endTime){ 

     return DB::table('tablice')->where([['datum', '>', $startDate." ".$startTime], ['datum', '<', $endDate." ".$endTime]])->get(); 

    } 

が、1つの単純なエラーで、私は日付の間のデータベースのレコードを検索する必要があり、このコードは動作します。返された日付は... {"id":62667,"br_tablice":"LK493","moguce_tablice":"LK493,LK8493,LK4293,LK4J93,LK893,L8493,LKB493,","ostalo":null,"datum":"2017-03-17 19:00:14"} ...のようになります。返された日付は2017-03-17 19:00:14ですが、データベースには2017-03-17 20:00:14であり、私はその理由を理解できません。 .envにはAPP_TIMEZONE=CETを設定しました。データベースと同じです。時間帯の変更は機能しません。タイムゾーンごとに試してみました。

+0

データベースがUTC(または+2 GMT?)に設定されているようです。 – apokryfos

+0

'SELECT @@ system_time_zone;でチェックされ、応答は' stdClass Object([@@ system_time_zone] => CET) 'です。 – Aleksandar

+0

タイムゾーンの問題でなければなりません。これを使用して時間を追加してください(高速修正)。 'strtotime($ time)+ 3600; // 1時間を追加する ' – Onix

答えて

0

検索の時間がたってから、上記のコードが修正されない限り、すべてのコードを変更することにしました。コメントでは、config/app.phpを見てみたが、データベースに関連するものは一切ありませんが、config/database.phpを見ると私の質問に解決策が与えられます。 database.phpには、... 'timezone' => env('DB_TIMEZONE', '+00:00'), ...という行がありますので、+01に変更して、それがうまくいきます。みなさん、ありがとうございます。