MySQL 获取年份
MySQL是一种常用的关系型数据库管理系统,用于存储、管理和检索数据。在处理日期和时间类型数据时,我们经常需要从日期中提取特定的部分,如年份、月份、日期等。本文将重点介绍如何在MySQL中获取年份。
1. YEAR() 函数
MySQL内置了许多日期和时间函数,其中包含了一个YEAR()
函数,可用于从日期或日期时间型的字段中提取年份。
语法
YEAR(date)
参数
date
:要获取年份的日期或日期时间型字段。
示例
SELECT YEAR('2022-01-01'); -- 返回 2022
SELECT YEAR('2022-12-31 23:59:59'); -- 返回 2022
2. EXTRACT() 函数
EXTRACT()
函数是MySQL提供的另一个强大的日期和时间函数,它可用于从日期或日期时间型字段中提取指定的部分。
语法
EXTRACT(unit FROM date)
参数
unit
:要提取的时间单位,可选值包括YEAR
、MONTH
、DAY
等。date
:要提取时间单位的日期或日期时间型字段。
示例
SELECT EXTRACT(YEAR FROM '2022-01-01'); -- 返回 2022
SELECT EXTRACT(YEAR FROM '2022-12-31 23:59:59'); -- 返回 2022
3. SUBSTRING() 函数
如果存储日期或日期时间的字段类型是字符串型,我们可以使用SUBSTRING()
函数从字符串中截取特定位置的字符,以获取年份。
语法
SUBSTRING(str, start, length)
参数
str
:要截取的字符串。start
:指定从字符串的哪个位置开始截取。length
:指定截取的字符数。
示例
SELECT SUBSTRING('2022-01-01', 1, 4); -- 返回 2022
SELECT SUBSTRING('2022-12-31 23:59:59', 1, 4); -- 返回 2022
4. STR_TO_DATE() 函数
如果日期或日期时间的字段类型是字符串型且格式不是MySQL默认的日期格式,我们可以使用STR_TO_DATE()
函数将字符串转换为日期后再提取年份。
语法
STR_TO_DATE(str, format)
参数
str
:要转换的字符串。format
:要转换的字符串的格式,参照MySQL的日期格式。
示例
SELECT YEAR(STR_TO_DATE('01-01-2022', '%d-%m-%Y')); -- 返回 2022
SELECT YEAR(STR_TO_DATE('31-12-2022 23:59:59', '%d-%m-%Y %H:%i:%s')); -- 返回 2022
5. 示例代码运行结果
下面是对以上示例代码的运行结果:
+----------------------+
| YEAR('2022-01-01') |
+----------------------+
| 2022 |
+----------------------+
+--------------------------------+
| YEAR('2022-12-31 23:59:59') |
+--------------------------------+
| 2022 |
+--------------------------------+
+----------------------------------+
| EXTRACT(YEAR FROM '2022-01-01') |
+----------------------------------+
| 2022 |
+----------------------------------+
+-----------------------------------------+
| EXTRACT(YEAR FROM '2022-12-31 23:59:59') |
+-----------------------------------------+
| 2022 |
+-----------------------------------------+
+---------------------------------+
| SUBSTRING('2022-01-01', 1, 4) |
+---------------------------------+
| 2022 |
+---------------------------------+
+----------------------------------------+
| SUBSTRING('2022-12-31 23:59:59', 1, 4) |
+----------------------------------------+
| 2022 |
+----------------------------------------+
+------------------------------------------------+
| YEAR(STR_TO_DATE('01-01-2022', '%d-%m-%Y')) |
+------------------------------------------------+
| 2022 |
+------------------------------------------------+
+-------------------------------------------------------+
| YEAR(STR_TO_DATE('31-12-2022 23:59:59', '%d-%m-%Y %H:%i:%s')) |
+-------------------------------------------------------+
| 2022 |
+-------------------------------------------------------+
通过以上示例,我们可以看到不同函数获取年份的结果都是一样的,可以根据实际情况选择适合的函数来提取日期字段中的年份。
结论
通过YEAR()
、EXTRACT()
、SUBSTRING()
和STR_TO_DATE()
等函数,我们可以轻松地从日期或日期时间型字段中获取年份。这些函数提供了多种处理日期的方法,开发者可以根据实际需求选择合适的函数使用。