laravel db query with now()

s4n0splo  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(338)

我需要从数据库中获取数据,但仅当returndate列表示将来的日期时。当我从db执行sql查询时,它的工作sql代码是:

SELECT * FROM `injuries_suspensions` WHERE `Type` = 'injury' and NOW() < `ReturnDate`

但是当我在laraveldb query builder中使用类似的版本时,我不会得到任何数据(当我用now()擦除where时,我会得到所有数据,所以这就是问题所在)
车道代码:

$injuries = DB::table('injuries_suspensions')->where('Type', '=', 'injury')->where(DB::raw('NOW()'), '<', 'ReturnDate')->get();

p、 db中的s日期是遥远的未来2020-11-30。

cqoc49vn

cqoc49vn1#

你想用简化版吗 whereRaw 取而代之的是:

$injuries = DB::table('injuries_suspensions')
    ->where('Type', '=', 'injury')
    ->whereRaw('ReturnDate > NOW()')->get(); //see I changed the comparison sides

观察结果是,您没有正确地使用whereraw:all应该在一个字符串中参见laravel的示例。
您还可以在构建查询时直接传递时间戳/日期,请参见:

use Carbon/Carbon;
....

$injuries = DB::table('injuries_suspensions')
    ->where('Type', '=', 'injury')
    ->where('ReturnDate', '>', Carbon::now()->toDateTimeString())->get();

注意你的数据库和服务器的时区差异。

相关问题