使用PHP查询MySQL指定日期

假设数据库为以下:

主机名库名用户名密码端口
localhostdemodemo1234563306

数据库demo下面有一张名为表名的数据表,内容如下

ID用户名日期字段
1六零2022-04-30 12:00:00
2LyLme2022-04-29 00:00:00
3用户2022-04-28 16:00:00

查询几天前的某一天

<?php
  /* 
  所需MySQL函数说明:
  SUBDATE(d,n)         //日期 d 减去 n 天后的日期,例,执行:SELECT SUBDATE('2022-04-30', 1); 返回结果:2022-04-29  //1天前(昨天)
  CURDATE()            //当前日期(yyyy-MM-dd格式) ,如2022-04-30
  CONCAT(str1,str2) //拼接字符串
  */
    $sql="SELECT *  FROM `表名` WHERE `日期字段` LIKE CONCAT(SUBDATE(CURDATE(),2),'%')"; //2天前(前天) 
    // $sql="SELECT *  FROM `表名` WHERE `日期字段` LIKE CONCAT(SUBDATE(CURDATE(),3),'%')"; //3天前
      mysqli_query($con,$sql);
        
  //例:今天为2022年4月30日,执行$sql的语句相对于 SELECT *  FROM `表名` WHERE `日期字段` LIKE 2022-04-29%
?>

查询近几天所有

<?php
$sql="SELECT * FROM `表名` WHERE DATE_SUB(CURDATE(), INTERVAL 2 DAY) < DATE(`日期字段`)"; //2天内(今天、昨天)
$sql="SELECT * FROM `表名` WHERE DATE_SUB(CURDATE(), INTERVAL 3 DAY) < DATE(`日期字段`)"; //3天内(今天、昨天、前天)
$sql="SELECT * FROM `表名` WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) < DATE(`日期字段`)"; //30天内 
mysqli_query($con,$sql); 
?>

查询周、月

<?php
$week = "SELECT * FROM `表名` WHERE YEARWEEK(DATE_FORMAT(`日期字段`,'%Y-%m-%d'),1) = YEARWEEK(NOW())";  //本周
$lastweek = "SELECT * FROM `表名` WHERE YEARWEEK(DATE_FORMAT(`日期字段`,'%Y-%m-%d'),1) = YEARWEEK(NOW())-1";  //上周
$month = "SELECT * FROM `表名` WHERE DATE_FORMAT(`日期字段`,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m')"; //本月
$lastmonth = "SELECT * FROM `表名` WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'),DATE_FORMAT(`日期字段`,'%Y%m')) = 1";  //上月
mysqli_query($con,$week);

注: YEARWEEK('日期,1)的1表示从星期一开始,默认0表示星期天

计数

<?php
//函数:
//mysqli_num_rows(查询);
    
//例:
    $sql="SELECT * FROM `表名` WHERE DATE_SUB(CURDATE(), INTERVAL 2 DAY) < DATE(`日期字段`)"; //2天内(今天、昨天)
    $query = mysqli_query($con,$sql)  //将sql语句执行结果赋值到$query
    
    echo mysqli_num_rows($query);  //输出2天内记录的数量