我想返回我的数据库表中一天或更少的所有行。我正在使用Laravel 4.这是我尝试的:Laravel /口才和比较日期
$date = date('Y-m-d H:i:s');
return MainContact::where(DATEDIFF('timestamp', $date), '<=', 1)->get();
这不起作用。我阅读了文档,看起来你不能传递Laravel MySQL函数。 timestamp
是日期时间字段。我如何才能在Laravel 4中比较这些日期?
我想返回我的数据库表中一天或更少的所有行。我正在使用Laravel 4.这是我尝试的:Laravel /口才和比较日期
$date = date('Y-m-d H:i:s');
return MainContact::where(DATEDIFF('timestamp', $date), '<=', 1)->get();
这不起作用。我阅读了文档,看起来你不能传递Laravel MySQL函数。 timestamp
是日期时间字段。我如何才能在Laravel 4中比较这些日期?
是user1977808给出的答案你是不是不错,因为MySQL不能在timestamp列上使用索引,因为它必须为每一行计算DATE_SUB函数的输出。避免这样的查询,他们必须每次处理整个表!
怎么是这样的:
return MainContact::where('timestamp', '>=', time() - (24*60*60))->get();
我把>=
在那里,因为你说的“一天或更短老”,所以他们必须有时间戳比昨天更高版本。
return MainContact::where('timestamp', '>=', time() - (24*60*60))->get();
我最终做了一件非常相似的事情。 – sehummel
他正在使用Laravel 4而不是5。 – Ian
你也可以使用whereDate()
,whereDay()
,whereMonth()
和whereYear()
。在这种情况下,whereDate()
可以作为这样的,与碳的易于日期函数:
return MainContact::whereDate('dateField', '<', Carbon::now()->subDay())->get();
是的,我不得不调整他的MySQL。 – sehummel
我做了MainContact :: where('timestamp','>',DB :: raw('NOW() - INTERVAL'。$ interval。'DAY') - > get();'然后在间隔中传递我想要 – sehummel
你也可以使用'strtotime(“ - 1 day”)',像这样: 'MainContact :: where('timestamp','>'strtotime(“ - {$ interval} day”)) - > get();' –