当前位置:实例文章 » 其他实例» [文章]mysql查询当天/昨天/近7天/近30天/本月/上个月/本季度/上季度/本年/上一年 数据

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,可能需要使用不同的函数或方法来实现相同的功能。

相关标签:mysql
其他信息

其他资源

Top