求问SQL查询:日期(年龄)范围

老瓷 2021-04-12 11:05:25
求问Sql查询:查询从2021-03-15起至现在,年满60周岁的人员
表相关字段:ProNo(编号), Brithday(出生日期)
已有函数GetAge(BirthDay,CurrDate)用于计算员工当前年龄,可用可不用。
谢谢!
...全文
1015 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
老瓷 2021-04-21
  • 打赏
  • 举报
回复
引用 10 楼 吉普赛的歌 的回复:
SELECT * 
FROM t
WHERE DATEDIFF(YEAR, birthday, '2021-03-15')>=60

03-15未满60,现在满60的呢。关键是还要考虑03-15未满60之后又满60的人员
老瓷 2021-04-12
  • 打赏
  • 举报
回复
引用 3 楼 锟斤拷锟斤拷 的回复:
直接GetAge(BirthDay,'2021-03-15')计算在315的时候大于60岁的人不就行了,只要315的时候满60岁,那以后肯定都满60了,人又不会越活越年轻

03-15未满60,但03-16以及之后一直到今天满60的呢,也要计算进去的呀
锟斤拷锟斤拷 2021-04-12
  • 打赏
  • 举报
回复
直接GetAge(BirthDay,'2021-03-15')计算在315的时候大于60岁的人不就行了,只要315的时候满60岁,那以后肯定都满60了,人又不会越活越年轻
老瓷 2021-04-12
  • 打赏
  • 举报
回复
引用 1 楼 兔子党党务院院长 的回复:
不知道你所说的查询从 2021-03-15 起是什么意思,出生日期从这个起的话肯定不满60周岁,是不是有另外一个字段
按你提供的可以

select *
from tb
where GetAge(BirthDay,getdate()) >= 60


2021-03-15,这个日期是指从该日起一直到现在,凡满60周岁的,查询出来:2021-03-15、16、……2021-04-01,02,……都有可能有年满60的
AcHerat 元老 2021-04-12
  • 打赏
  • 举报
回复
不知道你所说的查询从 2021-03-15 起是什么意思,出生日期从这个起的话肯定不满60周岁,是不是有另外一个字段 按你提供的可以

select *
from tb
where GetAge(BirthDay,getdate()) >= 60
吉普赛的歌 版主 2021-04-12
  • 打赏
  • 举报
回复
SELECT * 
FROM t
WHERE DATEDIFF(YEAR, birthday, '2021-03-15')>=60
老瓷 2021-04-12
  • 打赏
  • 举报
回复
对头:03-15之前未满60,从03-15起至现在满60的人员
锟斤拷锟斤拷 2021-04-12
  • 打赏
  • 举报
回复
哦我好像有点理解了,可不可以直接判断员工的生日是否在DATEADD(YY,-60,2021-03-15),DATEADD(YY,-60,GETDATE())区间
锟斤拷锟斤拷 2021-04-12
  • 打赏
  • 举报
回复
引用 6 楼 老瓷 的回复:
[quote=引用 5 楼 锟斤拷锟斤拷 的回复:][quote=引用 4 楼 老瓷 的回复:][quote=引用 3 楼 锟斤拷锟斤拷 的回复:]直接GetAge(BirthDay,'2021-03-15')计算在315的时候大于60岁的人不就行了,只要315的时候满60岁,那以后肯定都满60了,人又不会越活越年轻
03-15未满60,但03-16以及之后一直到今天满60的呢,也要计算进去的呀[/quote] 那直接计算现在大于60岁的人不就行了嘛,315之前满60的,现在肯定满60,315之后满60的,也要算进去,那不就可以直接计算现在大于60岁的人了嘛,就是1#的答案[/quote] 是呀,03-15之后满60的要算进去,但不能用今天的日期呀,03-15到昨天之间还有那么多天的满60的呢,是一个范围不是某确定日期呀。难点就在这个生日范围啊。[/quote] GetAge(BirthDay,昨天)大于60的人,肯定GetAge(BirthDay,今天)也大于60了,所以今天满60岁的员工集合肯定包含了昨天满60的员工集合。 还是说要计算【3-15之前未满60】并且【至今已满60】的人吗?那就where GetAge(BirthDay,2021-03-15)<60 AND GetAge(BirthDay,GETDATE())>=60
老瓷 2021-04-12
  • 打赏
  • 举报
回复
引用 5 楼 锟斤拷锟斤拷 的回复:
[quote=引用 4 楼 老瓷 的回复:][quote=引用 3 楼 锟斤拷锟斤拷 的回复:]直接GetAge(BirthDay,'2021-03-15')计算在315的时候大于60岁的人不就行了,只要315的时候满60岁,那以后肯定都满60了,人又不会越活越年轻

03-15未满60,但03-16以及之后一直到今天满60的呢,也要计算进去的呀[/quote]
那直接计算现在大于60岁的人不就行了嘛,315之前满60的,现在肯定满60,315之后满60的,也要算进去,那不就可以直接计算现在大于60岁的人了嘛,就是1#的答案[/quote]
是呀,03-15之后满60的要算进去,但不能用今天的日期呀,03-15到昨天之间还有那么多天的满60的呢,是一个范围不是某确定日期呀。难点就在这个生日范围啊。
锟斤拷锟斤拷 2021-04-12
  • 打赏
  • 举报
回复
引用 4 楼 老瓷 的回复:
[quote=引用 3 楼 锟斤拷锟斤拷 的回复:]直接GetAge(BirthDay,'2021-03-15')计算在315的时候大于60岁的人不就行了,只要315的时候满60岁,那以后肯定都满60了,人又不会越活越年轻
03-15未满60,但03-16以及之后一直到今天满60的呢,也要计算进去的呀[/quote] 那直接计算现在大于60岁的人不就行了嘛,315之前满60的,现在肯定满60,315之后满60的,也要算进去,那不就可以直接计算现在大于60岁的人了嘛,就是1#的答案

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧