mysql查询当天/昨天/近7天/近30天/本月/上个月/本季度/上季度/本年/上一年 数据
发布人:shili8
发布时间:2025-01-08 20:00
阅读次数:0
**MySQL 查询时间范围函数**
在 MySQL 中,我们可以使用各种函数来查询特定的时间范围内的数据。下面是一些常用的函数:
###1. 当天当天是指当前日期。
sqlSELECT CURDATE() AS 当天;
###2. 昨天昨天是指前一天的日期。
sqlSELECT DATE_SUB(CURDATE(), INTERVAL1 DAY) AS 昨天;
###3. 近7天近7天是指当前日期往前推7天内的所有日期。
sqlSELECT DATE_SUB(CURDATE(), INTERVAL6 DAY) AS 近7天;
###4. 近30天近30天是指当前日期往前推30天内的所有日期。
sqlSELECT DATE_SUB(CURDATE(), INTERVAL29 DAY) AS 近30天;
###5. 本月本月是指当前月份。
sqlSELECT CURDATE() AS 本月;
###6. 上个月上个月是指前一个月的日期。
sqlSELECT DATE_SUB(CURDATE(), INTERVAL1 MONTH) AS 上个月;
###7. 本季度本季度是指当前季度(第一季度:1-3月,第二季度:4-6月,第三季度:7-9月,第四季度:10-12月)。
sqlSELECT QUARTER(CURDATE()) AS 本季度;
###8. 上季度上季度是指前一个季度的日期。
sqlSELECT QUARTER(DATE_SUB(CURDATE(), INTERVAL3 MONTH)) AS 上季度;
###9. 本年本年是指当前年份。
sqlSELECT YEAR(CURDATE()) AS 本年;
###10. 上一年上一年是指前一个年的日期。
sqlSELECT DATE_SUB(CURDATE(), INTERVAL1 YEAR) AS 上一年;
**示例**
假设我们有一个名为 `orders` 的表,包含以下数据:
| id | order_date | total |
| --- | --- | --- |
|1 |2022-01-01 |100 |
|2 |2022-01-15 |200 |
|3 |2022-02-01 |300 |
|4 |2022-03-01 |400 |
|5 |2022-04-01 |500 |
我们可以使用上述函数来查询特定的时间范围内的数据:
sqlSELECT * FROM orders WHERE order_date BETWEEN CURDATE() AND DATE_SUB(CURDATE(), INTERVAL6 DAY);
这将返回近7天内的所有订单。
sqlSELECT * FROM orders WHERE order_date BETWEEN DATE_SUB(CURDATE(), INTERVAL29 DAY) AND CURDATE();
这将返回近30天内的所有订单。
sqlSELECT * FROM orders WHERE YEAR(order_date) = YEAR(CURDATE()) AND MONTH(order_date) = MONTH(CURDATE());
这将返回本月的所有订单。
sqlSELECT * FROM orders WHERE YEAR(order_date) = YEAR(DATE_SUB(CURDATE(), INTERVAL1 YEAR)) AND MONTH(order_date) = MONTH(DATE_SUB(CURDATE(), INTERVAL1 YEAR));
这将返回上个月的所有订单。
**注意**
以上函数仅适用于 MySQL5.6 或更高版本。对于较早版本的 MySQL,可能需要使用不同的函数或方法来实现相同的功能。