我有一个 MySQLmember表,其中一个DOB字段以DATE格式存储所有成员的出生日期(注意:它有“年份”部分)
我正在尝试找到正确的 SQL 以:
和另一个查询:
通过以下方式直接比较当前日期:
(DATEDIFF(DOB, now()) <= 14 and DATEDIFF(DOB, now()) >= 0)
Run Code Online (Sandbox Code Playgroud)
由于当前年份和 DOB 年份不同,因此不会获取任何内容。
但是,将 DOB 转换为“今年”根本行不通,因为今天可能是 1 月 1 日,而候选人的 DOB 可能是 12 月 31 日(反之亦然)
如果你能帮帮忙就太好了,非常感谢!:)
我的第一个想法是,使用 DAYOFYEAR 并获取差异会很容易,但这实际上在一年的开始/结束时有点棘手。然而:
WHERE
DAYOFYEAR(NOW()) - DAYOFYEAR(dob) BETWEEN 0 AND 14
OR DAYOFYEAR(dob) - DAYOFYEAR(NOW()) > 351
Run Code Online (Sandbox Code Playgroud)
应该有效,具体取决于您对闰年的关心程度。一个“更好”的答案可能是从 dob 中提取 DAY() 和 MONTH() 并使用 MAKEDATE() 构建当前(或潜在的过去/下一年)的日期并与之进行比较。