MySQL 获取当前近五年时间列表

在数据分析和处理过程中,经常需要获取一段时间范围内的数据。MySQL 是一个流行的关系型数据库管理系统,可以通过一些技巧来获取当前近五年时间列表。本文将介绍如何使用 MySQL 中的日期函数和语法来实现这个功能。

准备工作

在开始之前,我们需要创建一个示例表,用于存储时间数据。可以使用以下的 SQL 语句创建一个名为 dates 的表:

CREATE TABLE dates (
  id INT AUTO_INCREMENT PRIMARY KEY,
  date DATE
);

然后,我们向表中插入一些示例数据,例如从 2010 年到 2021 年的日期。可以使用以下的 SQL 语句插入数据:

INSERT INTO dates (date)
VALUES
  ('2010-01-01'),
  ('2011-02-03'),
  ('2012-03-04'),
  ('2013-04-05'),
  ('2014-05-06'),
  ('2015-06-07'),
  ('2016-07-08'),
  ('2017-08-09'),
  ('2018-09-10'),
  ('2019-10-11'),
  ('2020-11-12'),
  ('2021-12-13');

获取近五年时间列表

现在,我们可以开始编写 SQL 查询来获取当前近五年的时间列表。以下是一种实现方式:

SELECT DATE_FORMAT(date, '%Y') AS year
FROM dates
WHERE date >= DATE_SUB(CURDATE(), INTERVAL 5 YEAR)
GROUP BY year;

该查询的核心是使用了 DATE_SUB 函数和 INTERVAL 关键字来从当前日期减去五年。然后,使用 DATE_FORMAT 函数将日期格式化为年份,并使用 GROUP BY 子句按年份进行分组。

执行上述查询后,将会返回类似以下结果的时间列表:

| year |
|------|
| 2017 |
| 2018 |
| 2019 |
| 2020 |
| 2021 |

完整示例代码

以下是完整的示例代码,包括创建表、插入数据和执行查询:

-- 创建表
CREATE TABLE dates (
  id INT AUTO_INCREMENT PRIMARY KEY,
  date DATE
);

-- 插入数据
INSERT INTO dates (date)
VALUES
  ('2010-01-01'),
  ('2011-02-03'),
  ('2012-03-04'),
  ('2013-04-05'),
  ('2014-05-06'),
  ('2015-06-07'),
  ('2016-07-08'),
  ('2017-08-09'),
  ('2018-09-10'),
  ('2019-10-11'),
  ('2020-11-12'),
  ('2021-12-13');

-- 获取近五年时间列表
SELECT DATE_FORMAT(date, '%Y') AS year
FROM dates
WHERE date >= DATE_SUB(CURDATE(), INTERVAL 5 YEAR)
GROUP BY year;

总结

通过使用 MySQL 的日期函数和语法,我们可以轻松地获取当前近五年的时间列表。这对于数据分析和报告生成非常有用。在实际应用中,可以根据需要进一步调整查询条件和日期格式化方式,以满足具体的需求。

希望本文对你学习和使用 MySQL 的日期函数有所帮助!