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