MySQL 只根据月日查询的方法

在日常的开发中,我们经常需要根据日期对数据库进行查询。有时候,我们只对月日感兴趣,而不需要考虑年份。本文将介绍如何使用 MySQL 实现只根据月日进行查询的方法。

1. 创建测试表

首先,我们需要创建一个测试表来演示这个功能。我们创建一个名为 test_table 的表,包含两个字段:iddatedate 字段类型为 DATE,表示日期。

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

2. 插入测试数据

接下来,我们插入一些测试数据到 test_table 表中,包含不同的日期。

INSERT INTO test_table (date) VALUES
  ('2022-01-01'),
  ('2022-02-14'),
  ('2022-03-17'),
  ('2022-04-22');

3. 查询方法

现在我们开始介绍只根据月日进行查询的方法。

3.1 使用 MONTHDAY 函数

MySQL 提供了 MONTHDAY 函数,可以从日期中提取月份和日期。我们可以使用这两个函数来实现只根据月日查询的功能。

SELECT * FROM test_table
WHERE MONTH(date) = 2 AND DAY(date) = 14;

上述代码将查询出 test_table 表中月份为2月,日期为14号的记录。

3.2 使用 DATE_FORMAT 函数

除了使用 MONTHDAY 函数,我们还可以使用 DATE_FORMAT 函数来实现只根据月日查询的功能。DATE_FORMAT 函数可以将日期按照指定的格式进行格式化。

SELECT * FROM test_table
WHERE DATE_FORMAT(date, '%m-%d') = '04-22';

上述代码将查询出 test_table 表中月份为4月,日期为22号的记录。

4. 示例代码

下面是一个完整的示例代码,包括创建测试表、插入测试数据和查询方法。

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

-- 插入测试数据
INSERT INTO test_table (date) VALUES
  ('2022-01-01'),
  ('2022-02-14'),
  ('2022-03-17'),
  ('2022-04-22');

-- 查询方法
SELECT * FROM test_table
WHERE MONTH(date) = 2 AND DAY(date) = 14;

SELECT * FROM test_table
WHERE DATE_FORMAT(date, '%m-%d') = '04-22';

5. 结论

本文介绍了如何使用 MySQL 只根据月日进行查询的方法。我们可以使用 MONTHDAY 函数或者 DATE_FORMAT 函数来实现这个功能。这些方法对于一些特定的业务场景非常有用,例如生日提醒或者纪念日查询。希望本文对你在日常开发中遇到的类似问题有所帮助。

::: mermaid pie "2月14日" : 1 "3月17日" : 1 "4月22日" : 1 :::

::: mermaid stateDiagram [] --> 查询方法 查询方法 --> [] :::

参考资料:

  • [MySQL 官方文档](