我想返回数据库表中一天或更少旧的所有行。我正在使用Laravel 4.这就是我的尝试:
$date = date('Y-m-d H:i:s');
return MainContact::where(DATEDIFF('timestamp', $date), '<=', 1)->get();
这不起作用。我阅读了文档,似乎你不能通过Laravel MySQL函数。 timestamp
是日期时间字段。如何在Laravel 4中比较这些日期?
答案 0 :(得分:10)
user1977808给你的答案并不好,因为MySQL不能在timestamp列上使用索引,因为它必须为每一行计算DATE_SUB函数的输出。避免这样的查询,他们每次都必须处理整个表格!
这样的事情怎么样:
return MainContact::where('timestamp', '>=', time() - (24*60*60))->get();
我把>=
放在那里因为你说“一天或更少”,所以他们的时间戳必须晚于昨天。
答案 1 :(得分:3)
答案 2 :(得分:2)
return MainContact::where('timestamp', '>=', time() - (24*60*60))->get();
答案 3 :(得分:0)
您还可以使用以下方法执行原始查询:
$results = DB::query( 'query' );
您只在结果var
中没有返回模型对象答案 4 :(得分:0)
您还可以使用whereDate()
,whereDay()
,whereMonth()
和whereYear()
。在这种情况下,可以使用whereDate()
,使用Carbon的简易日期函数:
return MainContact::whereDate('dateField', '<', Carbon::now()->subDay())->get();