You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8中如何查询包含指定月份的日期区间数据?

正确查询方法

要获取与2023年10月时间范围有重叠的记录,核心逻辑是筛选出记录的开始日期不晚于10月最后一天,且记录的结束日期不早于10月第一天的数据(只要两个时间段有交集就符合要求)。

方法一:直接指定日期范围

$octoberStart = '2023-10-01';
$octoberEnd = '2023-10-31';

$data = MyModel::whereDate('start_date', '<=', $octoberEnd)
    ->whereDate('end_date', '>=', $octoberStart)
    ->get();

方法二:用Carbon动态计算月份范围(更灵活)

如果你的$dateNow是任意月份的第一天,用Carbon可以自动计算该月的起止日期,无需手动写死日期:

use Carbon\Carbon;

$dateNow = Carbon::parse('2023-10-01');
$monthStart = $dateNow->startOfMonth();
$monthEnd = $dateNow->endOfMonth();

$data = MyModel::whereDate('start_date', '<=', $monthEnd)
    ->whereDate('end_date', '>=', $monthStart)
    ->get();

原代码错误原因

你之前的查询条件是start_date <= 2023-10-01且end_date <= 2023-10-01,这只会筛选出在10月1日当天及之前就已经结束的记录,完全不符合“包含10月数据”的需求。

内容的提问来源于stack exchange,提问作者Alie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:05:57