按 Laravel 中的间隔日期过滤记录
Filter records by interval date in Laravel
我正在创建一个过滤器来获取信用卡的费用,以生成发票。
但我只让它按月和年过滤。我需要获取天数间隔、月份和年份的记录。
例如:
- Table: credit_cards
- 列:close_invoice (第 25 天)
如何获取上个月第 25 天到次日 25 之间的所有费用?
这是我按月筛选的查询:
$thisMonth = $now->format('m');
$thisYear = $now->format('Y');
$cc_expenses = Expense::where([
['bank_id', $bank->id],
['payment_method', 1],
['parcels', NULL]
])
->whereYear('date', $thisYear)
->whereMonth('date', $thisMonth)
->get();
但是这样我就得不到上个月第25天和最后一天之间的记录了。
提前致谢!
您可以使用
$previousMonthLastDay = now()->subMonth()->setDay(25)->setHour(0)->setMinute(0)->setSecond(0);
->whereBetween('date', [$previousMonthLastDay, now()])
我认为没有人需要设置从现在开始的未来时间,但如果你需要,你可以这样做$previousMonthLastDay without subMonth()
如果您现在的日期是 2022-04-13 12:22:10
,$previousMonthLastDay 将类似于 2022-04-25 00:00:00
我正在创建一个过滤器来获取信用卡的费用,以生成发票。
但我只让它按月和年过滤。我需要获取天数间隔、月份和年份的记录。
例如:
- Table: credit_cards
- 列:close_invoice (第 25 天)
如何获取上个月第 25 天到次日 25 之间的所有费用?
这是我按月筛选的查询:
$thisMonth = $now->format('m');
$thisYear = $now->format('Y');
$cc_expenses = Expense::where([
['bank_id', $bank->id],
['payment_method', 1],
['parcels', NULL]
])
->whereYear('date', $thisYear)
->whereMonth('date', $thisMonth)
->get();
但是这样我就得不到上个月第25天和最后一天之间的记录了。
提前致谢!
您可以使用
$previousMonthLastDay = now()->subMonth()->setDay(25)->setHour(0)->setMinute(0)->setSecond(0);
->whereBetween('date', [$previousMonthLastDay, now()])
我认为没有人需要设置从现在开始的未来时间,但如果你需要,你可以这样做$previousMonthLastDay without subMonth()
如果您现在的日期是 2022-04-13 12:22:10
,$previousMonthLastDay 将类似于 2022-04-25 00:00:00