我想写一个查询,向我展示一个月中某一天与表格中的日期之间的最微小差异。
select * from students where 5 = month(birthdate)
我想搜索5月份出生的学生,现在我希望在某一天和生日那天之间有一点点差异。
例如:
艾伦1980-05-03 鲍勃1978-05-07我把这一天设定为8.结果应该告诉我鲍勃。查询应该如何?
答案 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)。