0
点赞
收藏
分享

微信扫一扫

MySQL怎么选取生日

念川LNSC 2023-09-05 阅读 38

MySQL怎么选取生日

引言

在数据库中,我们经常需要根据生日来筛选出符合条件的记录。本文将介绍如何使用MySQL来选取生日,并给出相关的示例代码。

问题描述

假设我们有一个名为users的表,其中包含用户的相关信息,包括姓名、生日、性别等字段。现在我们需要从该表中选取出所有生日为特定日期的用户记录。

数据表结构

首先,我们需要创建一个名为users的数据表,用于存储用户信息。该数据表的结构如下:

CREATE TABLE `users` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(50) NOT NULL,
  `birthday` DATE NOT NULL,
  `gender` ENUM('male', 'female') NOT NULL,
  PRIMARY KEY (`id`)
);

其中,id字段为自增主键,name字段存储用户名,birthday字段存储生日,gender字段存储性别。

选取生日

选取当天生日的用户

要选取当天生日的用户,我们可以使用MySQL的CURDATE()函数来获取当前日期,并与用户表中的生日字段进行比较。示例代码如下:

SELECT * FROM `users` WHERE DATE_FORMAT(`birthday`, '%m-%d') = DATE_FORMAT(CURDATE(), '%m-%d');

上述代码中,DATE_FORMAT()函数用于将生日字段的日期格式化为月-日的形式,然后与当前日期进行比较。

选取本月生日的用户

如果我们需要选取本月生日的用户,可以使用MySQL的MONTH()DAY()函数来获取生日的月份和日期,并与当前月份进行比较。示例代码如下:

SELECT * FROM `users` WHERE MONTH(`birthday`) = MONTH(CURDATE()) AND DAY(`birthday`) >= DAY(CURDATE());

上述代码中,MONTH()函数用于获取生日的月份,DAY()函数用于获取生日的日期,然后与当前月份和日期进行比较。

选取指定日期范围内的生日

有时候,我们需要选取指定日期范围内的生日,例如选取今年某个月份的生日。可以使用MySQL的BETWEEN关键字来实现。示例代码如下:

SELECT * FROM `users` WHERE `birthday` BETWEEN '2021-06-01' AND '2021-06-30';

上述代码中,BETWEEN关键字用于指定日期范围,其中'2021-06-01'表示范围的起始日期,'2021-06-30'表示范围的结束日期。

示例

假设我们有以下的users表数据:

+----+------+------------+--------+
| id | name |  birthday  | gender |
+----+------+------------+--------+
|  1 | Amy  | 1990-06-15 | female |
|  2 | Bob  | 1995-07-20 | male   |
|  3 | Chris| 1985-06-25 | male   |
|  4 | David| 1992-06-10 | male   |
|  5 | Emma | 1993-08-05 | female |
+----+------+------------+--------+
选取当天生日的用户

执行以下SQL语句:

SELECT * FROM `users` WHERE DATE_FORMAT(`birthday`, '%m-%d') = DATE_FORMAT(CURDATE(), '%m-%d');

输出结果:

+----+------+------------+--------+
| id | name |  birthday  | gender |
+----+------+------------+--------+
|  1 | Amy  | 1990-06-15 | female |
|  3 | Chris| 1985-06-25 | male   |
|  4 | David| 1992-06-10 | male   |
+----+------+------------+--------+
选取本月生日的用户

执行以下SQL语句:

SELECT * FROM `users` WHERE MONTH(`birthday`) = MONTH(CURDATE()) AND DAY(`birthday`) >= DAY(CURDATE());

输出结果:

+----+------+------------+--------+
| id | name |  birthday  | gender |
+----+------+------------+--------+
|  1 | Amy  | 1990-
举报

相关推荐

0 条评论