在MySQL中清除当前月份和日期的WHERE

时间:2014-05-19 19:52:58

标签: mysql

是否有更清晰/更短/更易读的方式为当前日期和月份组合的查询添加WHERE语句。

SELECT id, name, dob, (YEAR(NOW()) - YEAR(dob)) AS age 
FROM people
WHERE MONTH(dob) = MONTH(NOW()) AND DAY(dob) = DAY(NOW())

例如;

WHERE dob = THISDAY()

1 个答案:

答案 0 :(得分:0)

2月29日出生的人通常在第60天庆祝他们的生日,无论日历日期如何(5月1日非闰年)。

虽然不短,但这种方法并没有遗漏2月29日出生的人:

SELECT id, name, dob, (YEAR(NOW()) - YEAR(dob)) AS age 
FROM people
WHERE DAYOFYEAR(curdate()) =
  DAYOFYEAR(DATE_ADD(dob, INTERVAL (YEAR(NOW()) - YEAR(dob)) YEAR))

闰年是没有简单方法的原因,如DAYOFYEAR(curdate()) = DAYOFYEAR(dob)