MySQL YEAR函数详解
1. 简介
MySQL是一种流行的开源关系型数据库管理系统,提供了丰富的函数来处理数据。其中之一就是YEAR()
函数,用于提取日期或日期时间表达式的年份部分。本文将详细介绍MySQL的YEAR()
函数的用法及示例。
2. 语法
YEAR(date)
date
:日期或日期时间表达式,可以是字符串、日期、时间戳或者DATE
、DATETIME
、TIMESTAMP
数据类型的列。
返回一个整数,表示日期或日期时间表达式的年份。
3. 示例
示例1: 获取当前日期的年份
SELECT YEAR(CURDATE()) as current_year;
输出:
+--------------+
| current_year |
+--------------+
| 2022 |
+--------------+
示例2: 获取日期列的年份
假设有一个名为orders
的表,其中有一个order_date
列,存储了订单的日期。我们可以使用YEAR()
函数来提取日期列的年份。
SELECT order_date, YEAR(order_date) as year
FROM orders;
输出:
+------------+------+
| order_date | year |
+------------+------+
| 2022-01-01 | 2022 |
| 2022-02-15 | 2022 |
| 2021-12-31 | 2021 |
+------------+------+
示例3: 提取日期时间表达式的年份
除了日期列,我们还可以使用YEAR()
函数提取日期时间表达式的年份。比如,我们有一个字符串'2022-01-01 12:34:56'
,我们可以使用STR_TO_DATE()
函数将其转换为日期时间类型,再使用YEAR()
函数提取年份。
SELECT '2022-01-01 12:34:56' as datetime_str, YEAR(STR_TO_DATE('2022-01-01 12:34:56', '%Y-%m-%d %H:%i:%s')) as year;
输出:
+----------------------+------+
| datetime_str | year |
+----------------------+------+
| 2022-01-01 12:34:56 | 2022 |
+----------------------+------+
示例4: 对空值的处理
在使用YEAR()
函数时,如果参数为NULL
,则返回值也为NULL
。
SELECT NULL as null_value, YEAR(NULL) as null_year;
输出:
+------------+-----------+
| null_value | null_year |
+------------+-----------+
| NULL | NULL |
+------------+-----------+
示例5: 使用YEAR()函数进行筛选
YEAR()
函数还可以与其他条件一起使用,进行数据筛选。比如,我们只想查询某一年的订单数据。
SELECT order_date, YEAR(order_date) as year
FROM orders
WHERE YEAR(order_date) = 2022;
输出:
+------------+------+
| order_date | year |
+------------+------+
| 2022-01-01 | 2022 |
| 2022-02-15 | 2022 |
+------------+------+
示例6: 使用YEAR()函数进行排序
YEAR()
函数可以用作ORDER BY
子句的一部分,用于按照年份排序结果。
SELECT order_date, YEAR(order_date) as year
FROM orders
ORDER BY YEAR(order_date) DESC;
输出:
+------------+------+
| order_date | year |
+------------+------+
| 2022-02-15 | 2022 |
| 2022-01-01 | 2022 |
| 2021-12-31 | 2021 |
+------------+------+
4. 总结
本文详细介绍了MySQL的YEAR()
函数的语法和用法,并给出了多个示例。通过YEAR()
函数,我们可以方便地提取日期或日期时间表达式的年份部分,用于数据分析、筛选和排序等操作。在实际使用中,我们可以根据具体需求灵活运用YEAR()
函数来处理日期和时间数据。