MySQL最近三年数据查询

MySQL是一种常用的关系型数据库管理系统,被广泛应用于各种应用程序的数据存储和查询。在实际应用中,我们常常需要查询最近三年的数据,以便进行分析和统计。本文将介绍如何使用MySQL查询最近三年的数据,并给出相应的代码示例。

准备工作

在开始查询最近三年数据之前,我们首先需要创建一个包含时间字段的表,并向表中插入一些数据。下面是创建表的SQL语句:

CREATE TABLE `data` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `value` INT(11) NOT NULL,
  `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后,我们向表中插入一些数据,以模拟最近三年的数据:

INSERT INTO `data` (`value`, `time`) VALUES
  (10, '2019-01-01 00:00:00'),
  (20, '2019-02-01 00:00:00'),
  ...
  (100, '2021-12-01 00:00:00');

查询最近三年数据

方法一:使用DATE_SUB函数

我们可以使用MySQL内置的DATE_SUB函数来查询最近三年的数据。DATE_SUB函数用于从指定日期减去指定的时间间隔。下面是使用DATE_SUB函数查询最近三年数据的SQL语句:

SELECT * FROM `data` WHERE `time` >= DATE_SUB(CURDATE(), INTERVAL 3 YEAR);

这条SQL语句将返回表中时间字段大于等于当前日期减去三年的所有记录。

方法二:使用YEAR函数

另一种常用的方法是使用YEAR函数来提取时间字段的年份,并进行比较。下面是使用YEAR函数查询最近三年数据的SQL语句:

SELECT * FROM `data` WHERE YEAR(`time`) >= YEAR(CURDATE()) - 3;

这条SQL语句将返回表中时间字段年份大于等于当前年份减去三的所有记录。

代码示例

下面是使用Python和MySQL Connector/Python驱动执行上述查询的代码示例:

import mysql.connector

# 连接数据库
cnx = mysql.connector.connect(
  host="localhost",
  user="your_username",
  password="your_password",
  database="your_database"
)

# 创建游标
cursor = cnx.cursor()

# 执行查询
query = "SELECT * FROM `data` WHERE `time` >= DATE_SUB(CURDATE(), INTERVAL 3 YEAR)"
cursor.execute(query)

# 获取结果
results = cursor.fetchall()

# 打印结果
for row in results:
  print(row)

# 关闭游标和连接
cursor.close()
cnx.close()

请将上述代码中的your_usernameyour_passwordyour_database替换为实际的数据库用户名、密码和数据库名称。

结果展示

为了更直观地展示最近三年数据的分布情况,我们可以使用饼状图来呈现各年份数据的占比。下面是使用mermaid语法绘制饼状图的示例代码:

pie
  title 最近三年数据分布
  "2019" : 30
  "2020" : 50
  "2021" : 20

上述示例中,我们假设2019年的数据占比为30%,2020年的数据占比为50%,2021年的数据占比为20%。

总结

本文介绍了如何使用MySQL查询最近三年的数据,并给出了相应的代码示例。我们可以使用DATE_SUB函数或YEAR函数来实现这一目标。此外,本文还展示了如何使用Python和MySQL Connector/Python驱动执行查询,并使用饼状图展示数据分布情况。希望本文对您在实际应用中查询最近三年数据时有所帮助。