mysql:天之间的细微差别

时间:2016-05-22 15:22:58

标签: mysql date difference days

我想写一个查询,向我展示一个月中某一天与表格中的日期之间的最微小差异。

select * from students where 5 = month(birthdate)

我想搜索5月份出生的学生,现在我希望在某一天和生日那天之间有一点点差异。

例如:

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

我把这一天设定为8.结果应该告诉我鲍勃。查询应该如何?

2 个答案:

答案 0 :(得分:1)

您可以使用:

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

SqlFiddleDemo

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

注意:这不会处理关系。

答案 1 :(得分:0)

在此设置当天,您选择所有生日与您选择的当天最接近的出生日期的学生。

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()返回给定日期的月份日期(1-31)。