mysql获取当前时间所在季度的第一天
时间: 2025-06-12 14:48:05 浏览: 22
### MySQL 获取当前时间所在季度的第一天
在 MySQL 中,可以通过日期和时间函数组合来获取当前时间所在季度的第一天。以下是实现这一功能的具体方法:
#### 方法一:使用 `DATE_FORMAT` 和 `QUARTER`
通过 `NOW()` 函数获取当前日期与时间,结合 `QUARTER()` 函数计算当前季度,并减去相应的月数以得到季度的起始日期。
```sql
SELECT DATE_FORMAT(NOW() - INTERVAL (QUARTER(NOW()) - 1) * 3 MONTH, '%Y-%m-%d') AS first_day_of_quarter;
```
上述代码中:
- `NOW()` 函数用于获取当前日期与时间[^2]。
- `QUARTER(NOW())` 返回当前日期处于哪个季度(1 到 4 之间的整数)[^2]。
- `INTERVAL (QUARTER(NOW()) - 1) * 3 MONTH` 根据当前季度的值计算出距离一季度的月数。
- 最后使用 `DATE_FORMAT()` 函数将结果格式化为“年-月-日”[^2]。
#### 方法二:使用 `MAKEDATE` 和 `QUARTER`
通过 `MAKEDATE()` 函数生成当年的第一天,然后结合 `QUARTER()` 函数计算当前季度的起始日期。
```sql
SELECT MAKEDATE(YEAR(CURDATE()), 1) + INTERVAL (QUARTER(CURDATE()) - 1) * 3 MONTH AS quarter_start;
```
上述代码中:
- `YEAR(CURDATE())` 获取当前年份[^3]。
- `QUARTER(CURDATE())` 获取当前季度[^3]。
- `MAKEDATE(YEAR(CURDATE()), 1)` 创建当年的第一天[^3]。
- 使用 `INTERVAL (QUARTER(CURDATE()) - 1) * 3 MONTH` 移动到当前季度的开始月份[^3]。
#### 方法三:结合 `EXTRACT` 和 `LAST_DAY`
通过 `EXTRACT()` 函数提取当前年份和季度信息,结合 `LAST_DAY()` 函数计算季度的起始日期。
```sql
SELECT CONCAT(
DATE_FORMAT(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()), 1) + INTERVAL QUARTER(CURDATE()) * 3 - 3 MONTH), '%Y-%m-'),
'01'
) AS first_day_of_quarter;
```
上述代码中:
- `EXTRACT(YEAR FROM CURDATE())` 提取当前年份[^5]。
- `QUARTER(CURDATE())` 获取当前季度[^5]。
- `MAKEDATE(EXTRACT(YEAR FROM CURDATE()), 1)` 创建当年的第一天[^5]。
- 使用 `INTERVAL QUARTER(CURDATE()) * 3 - 3 MONTH` 计算当前季度的起始月份。
- 最后通过 `CONCAT()` 函数构造完整的日期字符串[^5]。
#### 示例结果
假设当前日期为 `2023-10-18`,则上述查询的结果均为 `2023-10-01`,表示当前季度的起始日期为 `2023-10-01`。
---
阅读全文
相关推荐

















