2017-04-26 24 views
1

私はデータベースに存在するdatetimeに1時間を追加し、その時間を分に基づいて現在の時間と比較しています。時間。 upgradesdatetimeに1時間を追加し、時間と分に基づいて現在の時間と比較する

表構造:

id| postid |type |status| counter| datetime   | autoreposttime 

1 | 139 | M | P | 1  | 2017-04-26 10:49:23 | 60  
2 | 140 | M | P | 1  | 2017-04-26 10:49:27 | 60  
3 | 141 | M | P | 1  | 2017-04-26 10:49:31 | 60  
4 | 142 | M | P | 1  | 2017-04-26 10:49:34 | 60  

postsの表構造:

post_id | locationid | priority_time 

81  | 1   | 2017-04-20 18:29:17 
82  | 27   | 2017-04-20 18:29:19 
85  | 27   | 2017-04-20 18:29:07    

ここでは私がdatetime + 1 hourが提示する等しい行を取得する場所に書かれている私のSQLクエリです時間。

$posts = DB::table('upgrades') 
     ->join('posts','posts.post_id','=','upgrades.postid') 
     ->where(DB::raw('DATE_FORMAT(DATE_ADD(`upgrades`.`datetime`, INTERVAL 1 HOUR),"%Y-%m-%d %H:%i")'),$datetime) 
     ->select('posts.*','upgrades.*')->get(); 

私はNULLとしてデータを取得しています、と私はwhere条件でいくつかの問題があると思います。私の質問に何が間違っていますか?

+0

達成しようとしていることは何ですか? 'datetimeは今+ 1時間以上です'、 'datetimeは今+ 1時間未満です'などのデータを取得しますか? –

+0

datetime + 1hour nowall to now –

+0

データベースのタイムスタンプと一致する現在時刻の正確な範囲はどれくらいですか?たとえば、 '2017-04-26 10:49:10'はいずれの行にも一致しますか? '2017-04-26 10:49:30'は行の一部または全部にマッチしますか? '2017-04-26 10:50:12'はどうですか? –

答えて

1

これを行う1つの方法は、Carbonを使用することです。私があなたを正しく理解していれば、分単位で結果が欲しいので、ここに例があります:

$time = Carbon::now()->subHour(); 
$posts = .... 
    ->whereBetween('datetime', [$time->format('Y-m-d H:i:00'), $time->format('Y-m-d H:i:59']) 
    .... 
    ->get(); 
+1

問題は解決しました。返信ありがとうございます –

+0

喜んで助けました。 –

関連する問題