Mysql 使用now()进行Laravel数据库查询
我需要从数据库中获取数据,但仅当ReturnDate列表示将来的日期时。 当我从数据库执行SQL查询时,它会工作 SQL代码: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()
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,我应该尝试使用时间戳吗?