如何使用 SQL/PHP 验证日期的日期和月份是否在范围内

How to verify if day and month of date are in a range using SQL/PHP

这是一种算法,用于检查 前两周或接下来的 2 周内 was/gonna 是否是某个用户的生日,如果是,它会显示用户和他的生日。
获取数组确实有效,returning 天和月,但 SQL 没有 return 一个东西。

BornDate 是一个日期字段,所以没有必要使用 str_to_date (我试过了)。 我试图删除应用于接下来两个变量的函数 str_to_date :也没有结果。我究竟做错了什么?没有更简单的方法来实现我的需要吗?我的代码:

$sub = mysqli_fetch_array(mysqli_query($conn,"select date_sub(curdate(), interval 14 day);"));
$before = mysqli_fetch_array(mysqli_query($conn,"select date_format('$sub[0]', '%d-%m');"));

$add = mysqli_fetch_array(mysqli_query($conn,"select date_add(curdate(), interval 14 day);"));
$after = mysqli_fetch_array(mysqli_query($conn,"select date_format('$add[0]', '%d-%m');"));

$sql = "select * from user where date_format(bornDate, '%d-%m') between str_to_date('$before[0]', '%d-%m') and str_to_date('$after[0]', '%d-%m');";
$request = mysqli_query($conn, $sql);

if (mysqli_affected_rows($link) != 0) {
  while ($user = mysqli_fetch_array($request, MYSQLI_ASSOC)) {
    echo $user['name'];
    echo $user['bornDate'] . "<br>";
  }
} else {
  echo "No user does/did birthday on previous/next 2 weeks";
}

请使用此查询获取结果(出生在前两周或后两周内的用户)

select * from user where DAYOFYEAR(bornDate) between 
DAYOFYEAR(CURDATE())-14 and DAYOFYEAR(CURDATE())+14

试试

WHERE date_format(bornDate, '%m-%d') between '07-01' and '10-01'

解决方案是将 SQL 代码更新为:

$sql = "select * from user where DAYOFYEAR(bornDate) between DAYOFYEAR(CURDATE())-13 and DAYOFYEAR(CURDATE())+15;";

不再需要 $sql 以上的所有提取数组。