Mysql 使用now()进行Laravel数据库查询

Mysql 使用now()进行Laravel数据库查询,mysql,laravel,Mysql,Laravel,我需要从数据库中获取数据,但仅当ReturnDate列表示将来的日期时。 当我从数据库执行SQL查询时,它会工作 SQL代码: SELECT * FROM `injuries_suspensions` WHERE `Type` = 'injury' and NOW() < `ReturnDate` 从'injurises\u suspensions'中选择*其中'Type`='injury'和NOW()

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

SELECT * FROM `injuries_suspensions` WHERE `Type` = 'injury' and NOW() < `ReturnDate`
从'injurises\u suspensions'中选择*其中'Type`='injury'和NOW()<'ReturnDate`
但是当我在Laravel DB query builder中使用类似的版本时,我不会得到任何数据(当我用NOW()擦除where时,我会得到所有数据,所以这就是问题所在)

Lravel代码:

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

$injurises=DB::table('injurises_suspensions')->where('Type','=','injurish')->where(DB::raw('NOW()'),“您想改用简化版
whereRaw

$injuries = DB::table('injuries_suspensions')
    ->where('Type', '=', 'injury')
    ->whereRaw('ReturnDate > NOW()')->get(); //see I changed the comparison sides
观察到,您没有正确使用whereRaw:所有内容都应该在一个字符串中,请参见

您还可以在构建查询时直接传递时间戳/日期,请参见:

use Carbon/Carbon;
....

$injuries = DB::table('injuries_suspensions')
    ->where('Type', '=', 'injury')
    ->where('ReturnDate', '>', Carbon::now()->toDateTimeString())->get();
PS:注意数据库和服务器的时区差异


返回日期的格式是什么?datetime,我应该尝试使用时间戳吗?