mysql: 天数之间的细微差别

mysql: slightest difference between days

我想编写一个查询,以显示一个月中的给定日期与表中的日期之间最细微的差异。

select * from students where 5 = month(birthdate)

我想搜索五月出生的学生,现在我想获得给定日期与生日日期之间的细微差异。

例如:

艾伦 1980-05-03 鲍勃 1978-05-07

然后我将日期设置为 8。结果应该显示 Bob。查询应该是什么样的?

您可以使用:

SELECT *
FROM students
WHERE month(birthdate) = 5
ORDER BY ABS(DAY(NOW()) - DAY(birthdate))
LIMIT 1;

SqlFiddleDemo

当您仅在一个月范围内进行比较时,您可以轻松地了解特定月份的日期之间的差异。

注意:这不会处理平局。

在这里你设置日期,你选择所有生日与你选择的日期最接近的学生。

Set @Day = 5; -- your number
Select * from students 
where month (birthdate)=5 -- set this to month
Having birthdate = (select min(birthdate) from students order by abs(@Day - dayofmonth(birth date)) desc limit 1);

Dayofmonth() returns 给定日期的月中第 (1-31) 日。