如何编写SQL查询获取上周满65周岁人员的数据?
筛选近7天满65周岁的用户SQL解决方案
你的原查询逻辑完全不对,current_date - 65是取当前日期往前推65天的日期,这和用户满65周岁的条件毫无关联,自然查不到结果。
正确的思路是:计算用户满65周岁的日期(出生日期加上65年),再判断这个日期是否落在当前日期往前7天到当前日期的区间内。以下是不同数据库的实现代码:
- PostgreSQL 版本:
SELECT * FROM your_table WHERE birth_date + INTERVAL '65 years' BETWEEN CURRENT_DATE - INTERVAL '7 days' AND CURRENT_DATE;
- MySQL 版本:
SELECT * FROM your_table WHERE DATE_ADD(birth_date, INTERVAL 65 YEAR) BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE();
- SQL Server 版本:
SELECT * FROM your_table WHERE DATEADD(YEAR, 65, birth_date) BETWEEN DATEADD(DAY, -7, GETDATE()) AND GETDATE();
注意事项:
- 把代码里的
your_table替换成你实际使用的表名 - 部分数据库对闰年、2月29日出生的用户有特殊处理逻辑,比如非闰年时会将2月29日的生日视为2月28日或3月1日,可根据业务需求调整判断规则
内容的提问来源于stack exchange,提问作者AmateurCoder
相关产品推荐
相关产品推荐

