MySQL取年月份函数
时间: 2025-07-03 14:20:04 浏览: 11
<think>我们正在处理一个关于MySQL日期函数的问题,用户询问如何提取年份和月份。根据引用,我们可以使用EXTRACT()函数或DATE_FORMAT()函数来实现。
1. EXTRACT()函数:可以提取日期的一部分,如年、月、日等。
语法:EXTRACT(unit FROM date)
例如,提取年份:EXTRACT(YEAR FROM date_column)
提取月份:EXTRACT(MONTH FROM date_column)
2. 另外,引用[2]提到MySQL Extract()函数功能全面,可以替代date()和time()的功能。
3. 同时,我们也可以使用DATE_FORMAT()函数来格式化日期,从而得到年份和月份。例如:
提取年份:DATE_FORMAT(date_column, '%Y') # 四位年份
提取月份:DATE_FORMAT(date_column, '%m') # 两位数字月份(01-12)
4. 用户可能想要同时提取年份和月份,例如格式化为'2024-07'。我们可以使用:
使用EXTRACT分别提取然后拼接:CONCAT(EXTRACT(YEAR FROM date_column), '-', LPAD(EXTRACT(MONTH FROM date_column), 2, '0'))
或者使用DATE_FORMAT:DATE_FORMAT(date_column, '%Y-%m') # 直接得到'2024-07'
5. 注意:如果用户需要的是月份的名称(如July),可以使用DATE_FORMAT(date_column, '%M'),但用户问题中只要求年份和月份,所以数字月份即可。
6. 根据引用[3]中提到的DATE_FORMAT格式化,我们可以灵活运用。
因此,回答将包括:
- 介绍EXTRACT函数提取年份和月份
- 介绍DATE_FORMAT函数提取年份和月份
- 如何同时获取年份和月份的组合(如'2024-07')
另外,根据系统指令,我们需要生成相关问题。</think>### MySQL中提取年份和月份的函数
在MySQL中提取日期字段的年份和月份,主要有以下两种方法:
#### 1. **`EXTRACT()` 函数**
这是最直接的提取方式,语法为:
```sql
SELECT
EXTRACT(YEAR FROM date_column) AS year,
EXTRACT(MONTH FROM date_column) AS month
FROM your_table;
```
- **功能**:
- `YEAR` 单位提取年份(如 `2024`)
- `MONTH` 单位提取月份(`1-12`的数字)
- **示例**:
```sql
-- 提取员工入职年份和月份
SELECT
hire_date,
EXTRACT(YEAR FROM hire_date) AS join_year,
EXTRACT(MONTH FROM hire_date) AS join_month
FROM employees;
```
- **优势**:符合SQL标准,语法简洁[^2]。
#### 2. **`DATE_FORMAT()` 函数**
通过格式化输出提取日期部分,语法为:
```sql
SELECT
DATE_FORMAT(date_column, '%Y') AS year, -- 四位年份
DATE_FORMAT(date_column, '%m') AS month -- 两位月份(01-12)
FROM your_table;
```
- **格式说明**:
- `%Y` → 四位年份(如 `2024`)
- `%y` → 两位年份(如 `24`)
- `%m` → 两位月份(如 `07`)
- `%c` → 无前导零月份(如 `7`)
- **组合提取**:
可直接输出 `年-月` 格式:
```sql
SELECT DATE_FORMAT(hire_date, '%Y-%m') AS year_month
FROM employees; -- 结果如 '2024-07'
```
- **扩展性**:支持自定义格式(如 `%M` 输出月份名 `July`)[^3]。
---
### 使用场景对比
| **需求** | **推荐函数** | **示例输出** |
|------------------------|--------------------|--------------------|
| 单独提取年份/月份数字 | `EXTRACT()` | `2024`, `7` |
| 需固定位数(如01-12) | `DATE_FORMAT()` | `2024`, `07` |
| 组合年-月字符串 | `DATE_FORMAT()` | `2024-07` |
| 获取月份名称 | `DATE_FORMAT()` | `July` |
> ⚠️ **注意**:日期字段需为 `DATE`/`DATETIME` 类型。若数据为字符串,先用 `STR_TO_DATE()` 转换。
---
阅读全文
相关推荐


















