如何按当前日期查询记录?

How to query records by current date?

下面的代码允许我计算 IP 注册的访问总数:

$stmtIP = $con->prepare("SELECT COUNT(*) FROM visitor_ip WHERE ip_remote=?");
$stmtIP->bind_param("s",$IP_ADDRESS);
$stmtIP->execute();
$count_ip_record = null;
$stmtIP->bind_result($count_ip_record);
$stmtIP->fetch();
$stmtIP->close();

echo $count_ip_record;

我在数据 table 中有一列名为:visitor_date 类型 datetime,记录 a:

2021-01-18 19:40:15

我想按当前日期计算 IP 条记录。我怎样才能将该条件传递给 WHERE?

使用CURDATE函数:

SELECT COUNT(*) FROM visitor_ip WHERE DATE(visitor_date) = CURDATE() AND ip_remote=?

或通过参数的任何日期:

$date = date('Y-m-d');
$sql = "SELECT COUNT(*) FROM visitor_ip WHERE DATE(visitor_date) = ? AND ip_remote=?";
$stmtIP = $con->prepare($sql);
$stmtIP->bind_param("ss", $date, $IP_ADDRESS);
$stmtIP->execute();

如果visitor_date有索引:

$date = date('Y-m-d');
$sql = "SELECT COUNT(*) FROM visitor_ip "
     . "WHERE (visitor_date BETWEEN ? AND ? + INTERVAL 1 DAY) AND ip_remote=?";
$stmtIP = $con->prepare($sql);
$stmtIP->bind_param("sss", $date, $date, $IP_ADDRESS);
$stmtIP->execute();