我在编写正确的SQL查询之前遇到一些问题,然后通过php文件为它编写正确的代码。
实际上我有一个表sql(tblperson),其中有一些人名(作为名称)和他们的生日日期(yy / mm / dd),我需要查看过去15天生日的人到今天。
我尝试了一些不同的查询而没有成功:
SELECT name, birthday FROM tblperson
WHERE DATEDIFF(birthday,(SELECT DATE_SUB(NOW(), INTERVAL 15 DAY))
SELECT name, birthday FROM tblperson
WHERE DATE(bb) = DATE_SUB(birthday,(NOW(), INTERVAL 15 DAY))
我该如何解决?
答案 0 :(得分:1)
由于年份组件,生日问题很棘手。以下是几乎的一种方法:
select name, birthday
from tblperson
where format(bb, '%m%d') <= format(curdate(), '%m%d') and
format(bb, '%m%d') >= format(curdate() - interval 15 day, '%m%d');
问题是一年中的前15天。以下是一种明确处理该方法的方法:
select name, birthday
from tblperson
where (format(curdate(), '%m%d') > '0115' and
format(bb, '%m%d') <= format(curdate(), '%m%d') and
format(bb, '%m%d') >= format(curdate() - interval 15 day, '%m%d')
) or
(format(curdate(), '%m%d') < '0115' and
format(bb + interval 15 day, '%m%d') <= format(curdate() + interval 15 day, '%m%d') and
format(bb + interval 15 day, '%m%d') >= format(curdate(), '%m%d')
)