使用PHP查询MySQL指定日期
使用PHP查询MySQL指定日期
假设数据库为以下:
主机名 | 库名 | 用户名 | 密码 | 端口 |
---|---|---|---|---|
localhost | demo | demo | 123456 | 3306 |
数据库demo
下面有一张名为表名
的数据表,内容如下
ID | 用户名 | 日期字段 |
---|---|---|
1 | 六零 | 2022-04-30 12:00:00 |
2 | LyLme | 2022-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天内记录的数量
用手机扫描下方二维码可在手机上浏览和分享