在以下查询中,不考虑闰年。
SELECT e.id,
e.title,
e.birthdate
FROM employers e
WHERE DAYOFYEAR(curdate()) <= DAYOFYEAR(e.birthdate)
AND DAYOFYEAR(curdate()) +14 >= DAYOFYEAR(e.birthdate)
因此,在这个查询中,出生于闰年的人的出生日期在非闰年有不同的年份。
我如何调整查询以确保它在闰年也能工作?
我的mysql版本是:5.0.67
Where NOW()
是非闰年2011
,问题出现在 2 月 29 日之后出生于闰年的任何人都会有额外的一天,因为您正在使用DAYOFYEAR
反对出生年份。
DAYOFYEAR('2004-04-01') // DAYOFYEAR(e.birthdate) Returns 92
DAYOFYEAR('2011-04-01') // DAYOFYEAR(NOW()) Returns 91
你在哪里做DAYOFYEAR
,您需要的是当年的出生日期,而不是出生年份。
所以,而不是:
DAYOFYEAR(e.birthdate)
您可以将其转换为今年,如下所示:
DAYOFYEAR(DATE_ADD(e.birthdate, INTERVAL (YEAR(NOW()) - YEAR(e.birthdate)) YEAR))
它将出生日期转换为:
'2004-04-01'
To:
'2011-04-01'
因此,这是修改后的查询:
SELECT e.id,
e.title,
e.birthdate
FROM employers e
WHERE DAYOFYEAR(curdate()) <= DAYOFYEAR(DATE_ADD(e.birthdate, INTERVAL (YEAR(NOW()) - YEAR(e.birthday)) YEAR))
AND DAYOFYEAR(curdate()) +14 >= DAYOFYEAR(DATE_ADD(e.birthdate, INTERVAL (YEAR(NOW()) - YEAR(e.birthday)) YEAR))
2月29日出生的人会在非闰年的3月1日出生,这一天仍然是一天60
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)