Laravel 4+为您提供以下方法:,,(#3946)和(#6879)。whereDay()
whereMonth()
whereYear()
whereDate()
他们为您完成SQL工作,并管理SQLite的差异。DATE()
您的结果可以实现如下:
->whereDate('date', '<=', '2014-07-10')
有关更多示例,请参阅#3946的第一条消息和这篇Laravel Daily文章。
更新:虽然上述方法很方便,但正如Arth所指出的那样,它在大型数据集上效率低下,因为SQL函数必须应用于每条记录,从而丢弃可能的索引。DATE()
以下是一些比较的方法(但请阅读下面的注释):
->where('date', '<=', '2014-07-10 23:59:59')
->where('date', '<', '2014-07-11')
// '2014-07-11'
$dayAfter = (new DateTime('2014-07-10'))->modify('+1 day')->format('Y-m-d');
->where('date', '<', $dayAfter)
笔记:
- 23:59:59 是可以的(目前),因为 1 秒的精度,但看看这篇文章: 23:59:59 不是一天的结束。不,真的!
- 请记住“零日期”情况(“0000-00-00 00:00:00”)。虽然,这些“零日期”应该避免,但它们是许多问题的根源。如果需要,最好使该字段为空。