作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个过滤器可以让用户按月份和年份进行过滤。
$month = $request['month'];
$year = $request['year'];
这是我尝试从表中获取日期和年份之前的所有数据。例如:获取2019年3月之前的所有数据。
$result = DB::table('a')->select(*)->whereMonth('date','<=',$month)->whereYear('date','<=',$year)->get();
但是上面的查询只给出了 2019 年之前每年 1 月、2 月的结果,而不是 2019 年 3 月之前的每个月的结果
最佳答案
只需与日期文字直接比较:
$result = DB::table('a')
->select(*)
->where('date', '<', '2019-03-01')
->get();
这对应于以下原始 MySQL 查询:
SELECT *
FROM a
WHERE date < '2019-03-01';
请注意,上面的 WHERE
子句是sargable,这意味着可以使用包含 date
列的索引。您建议的以下版本不可控制:
SELECT *
FROM a
WHERE
YEAR(date) < 2019 OR (YEAR(date) = 2019 AND MONTH(date) < 3);
这是 Laravel 代码:
$result = DB::table('a')
->select(*)
->whereYear('date', '<', '2019')
->orWhere(function($query) {
$query->whereYear('date', '=', '2019')
->whereMonth('date', '<', '3')
})
->get();
关于php - 如何仅查询之前(月和年)的日期? (拉拉维尔),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58585793/
我正在使用 git clone 部署我的 Laravel 项目并使用 git pull 进行更新 它工作正常,但每次部署时,我都必须从 config/app.php providers 数组和 ali
我是一名优秀的程序员,十分优秀!