我试图获取在未来3天内过生日的雇员。我试图通过使用以下查询来实现这一点。
public function upcomingBirthdays()
{
$from = now()->format('m-d');
$to = now()->addDays(3)->format('m-d');
$employees = Employees::whereRaw("DATE_FORMAT(dob, '%m-%d') BETWEEN '{$from}' AND '{$to}'")
->where('team_id', 13)
->where('status', 1)
->orderBy('dob', 'DESC')
->get();
return view('frontend.employee.birthdays', compact('employees'));
}
// End Method
但这并没有返回预期的数据。
今天是2022-11-09
这是返回生日介于*2022年11月8日 * 和 *2022年11月10日 * 之间的员工。但不返回生日为11月11日和11月12日的员工。
3条答案
按热度按时间vyswwuz21#
该问题可能与日期格式有关。使用DD而不是d,您将得到一个前导零表示一位数的月份日期。对于月份也是如此:使用MM代替m。
注意:对于1月1日、2日和3日的生日,此操作仍将失败。
gkl3eglg2#
你可能需要一个从nesbot到处理日期的Carbon包。我还没有测试过用内置PHP在日期内查询,但是我的代码可以用Carbon包。
所以,在你的情况下,试试这个:
tpxzln5u3#
最终对我有效的解决方案是: