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

Laravel中如何用whereIn结合whereDay筛选指定工作日数据

当然可以实现!

你说的这种用whereIn结合日期筛选的思路完全可行,这正是Laravel查询构造器为日期场景优化的地方之一。

具体实现代码

假设你的模型是MonthlyRecord(记得换成你实际的模型名称),直接看代码最直观:

// 你的工作日天数数组
$workDays = [1,2,3,4,5,8,9,10,11,12,15,16,17,18,19,22,23,24,25,26,29,30,31];
$targetYear = 2024; // 替换成你要查询的年份
$targetMonth = 10; // 替换成你要查询的月份

// 构建查询
$filteredRecords = MonthlyRecord::query()
    // 先锁定目标年月
    ->whereYear('Clock_Day', $targetYear)
    ->whereMonth('Clock_Day', $targetMonth)
    // 再匹配工作日天数:提取日期的"日"部分,用whereIn匹配数组
    ->whereIn(\DB::raw('DAY(Clock_Day)'), $workDays)
    ->get();

为什么这么写?

  • whereYear和whereMonth是Laravel提供的快捷方法,会自动生成对应的SQL日期函数条件,比手动写DATE_FORMAT更简洁不易出错
  • DB::raw('DAY(Clock_Day)')会从Clock_Day字段中提取出日期的“日”部分(比如2024-10-08会被提取成8),然后用whereIn和你的工作日数组做匹配,精准筛选出当月的工作日数据

如果你的Clock_Day字段是标准的date或datetime类型,这个查询会非常高效,数据库也能利用日期相关的索引(如果有的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:38:12