Laravel
4+为您提供这些方法:
whereDay(),
whereMonth(),
whereYear()(#3946)和
whereDate()(#6879)。
他们
DATE()为您完成SQL 工作,并管理SQLite的差异。
您的结果可以这样实现:
->whereDate('date', '<=', '2014-07-10')
有关更多示例,请参见#3946的第一条消息以及此Laravel
Daily文章。
更新:
尽管上述方法很方便,但正如Arth所指出的那样,它在大型数据集上效率不高,因为
DATE()必须在每个记录上应用SQL函数,从而丢弃了可能的索引。
以下是进行比较的一些方法(但请阅读以下说明):
->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”)。尽管应该避免这些“零日期”,但它们是许多问题的根源。如果需要,最好使该字段为空。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)