gpt4 book ai didi

php - 如何仅查询之前(月和年)的日期? (拉拉维尔)

转载 作者:行者123 更新时间:2023-11-29 15:32:27 25 4
gpt4 key购买 nike

我有这个过滤器可以让用户按月份和年份进行过滤。
$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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com