 
					元芳怎么了
					从你的问题来看,这不是很清楚,但如果我理解正确的话,你想要这个:SELECT *FROM tableWHERE myDate LIKE concat('%', :start_day_of_year, '%')AND   myDate LIKE concat('%', :end_day_of_year, '%')$users->whereRaw($sql, [    'start_day_of_year' => substr($fromDate, 5),     'end_day_of_year' => substr($toDate, 5), ]);
					
				
				
				
					 
					翻过高山走不出你
					定义来自:用户输入至:用户输入目标:数据库字段逻辑您必须涵盖 4 种情况:逐年>变化不匹配,因为你没有覆盖一天。年复一年==。(标准)目标必须是>=“从AND” 目标必须是<=“到”。From-Year +1 <To-Year(From 相对于 To 超过 1 年)全部匹配,因为您的覆盖时间超过一年年复一年+1 ==。(从去年相对于到)至>=从匹配所有内容,因为您至少覆盖了一整年。目标>=从OR目标<=到匹配。将所有内容包裹在一起NOT(1) AND (2 OR 3 OR (4 AND (4.1 OR 4.2 )))预备课程我们将日和月转换为一个简单的数字,这样比较很容易:DATE_FORMAT('2000-01-01','%m%d')将是0101=>101建筑模块从年份开始DATE_FORMAT(?,'%Y')到年度DATE_FORMAT(?,'%Y')从DATE_FORMAT(?,'%m%d')到DATE_FORMAT(?,'%m%d')目标DATE_FORMAT(myDate,'%m%d')作为 SQL-- 1NOT(    DATE_FORMAT(?,'%Y') > DATE_FORMAT(?,'%Y'))AND(    -- 2    (        DATE_FORMAT(?,'%Y') = DATE_FORMAT(?,'%Y')        AND        DATE_FORMAT(myDate,'%m%d') >= DATE_FORMAT(?,'%m%d')        AND        DATE_FORMAT(myDate,'%m%d') <= DATE_FORMAT(?,'%m%d')    )    OR    -- 3    (DATE_FORMAT(?,'%Y')+1) < DATE_FORMAT(?,'%Y')    OR    (        -- 4        (DATE_FORMAT(?,'%m%d')+1) = DATE_FORMAT(?,'%m%d')        AND        (            -- 4.1            DATE_FORMAT(?,'%m%d') >= DATE_FORMAT(?,'%m%d')            OR            -- 4.2            (                DATE_FORMAT(myDate,'%m%d') >= DATE_FORMAT(?,'%m%d')                OR                DATE_FORMAT(myDate,'%m%d') <= DATE_FORMAT(?,'%m%d')            )        )    ))参数[$frm, $to, $frm, $to, $frm, $to, $frm, $to, $frm, $to, $to, $frm, $frm, $to]您也许可以使用命名绑定。我不知道。(这将显着缩短参数)不是测试 - 调试愉快:D