如何在SQL中根据出生日期计算年龄(以年为单位)
我想知道这个人70岁后的下一个月的1号。如何在SQL中实现这一点 我用这个公式计算年龄如何在SQL中根据出生日期计算年龄(以年为单位),sql,Sql,我想知道这个人70岁后的下一个月的1号。如何在SQL中实现这一点 我用这个公式计算年龄 DECLARE @Date_of_birth DATETIME = '1915-10-02 00:00:00.000' DECLARE @AGE INT SELECT @AGE = FLOOR((CAST (GETDATE() AS INTEGER) - CAST(@Date_of_birth AS INTEGER)) / 365.25) IF(@AGE > 70) How to find
DECLARE @Date_of_birth DATETIME = '1915-10-02 00:00:00.000'
DECLARE @AGE INT
SELECT @AGE = FLOOR((CAST (GETDATE() AS INTEGER) - CAST(@Date_of_birth AS INTEGER)) / 365.25)
IF(@AGE > 70)
How to find the first of the month following the date ??
IF (@AGE >80)
您可以像这样使用dateadd函数
select dateadd(d,1 - datepart(d,dateadd(m,1,dateadd(yy,70",,@Date_of_birth)),dateadd(m,1,dateadd(yy,70",,@Date_of_birth)))
declare @BD_70 date = dateadd(yy,70",,@Date_of_birth)
declare @Nxt_Month_70 = dateadd(m,1,@BD_70 date)
declare @First_Of_Month_70 = dateadd(d,1 - datepart(d,@Nxt_Month_70),@Nxt_Month_70)
您可以这样分解这个查询
select dateadd(d,1 - datepart(d,dateadd(m,1,dateadd(yy,70",,@Date_of_birth)),dateadd(m,1,dateadd(yy,70",,@Date_of_birth)))
declare @BD_70 date = dateadd(yy,70",,@Date_of_birth)
declare @Nxt_Month_70 = dateadd(m,1,@BD_70 date)
declare @First_Of_Month_70 = dateadd(d,1 - datepart(d,@Nxt_Month_70),@Nxt_Month_70)
基本上,您可以添加70岁,查找下个月,并将日期替换为该月的第一天。您可以使用datediff计算他们的年龄,然后使用date add查找他们的70岁生日。要在之后查找月的第一个月,可以使用“月”和“年”功能
create table #people (name varchar(30), birthdate date)
insert into #people
values ('Bob', '07/08/1976'), ('Tasha','05/30/1996'),('April','04/01/1971')
--This will give you everyone's age
select DATEDIFF(YY,birthdate,GETDATE()) as age
from #people
--This will give you the first month following the date that they turn 70
select Name, DATEADD(yy,70,birthdate) as [70thBday], convert(varchar,month(dateadd(m,1,DATEADD(yy,70,birthdate)))) + '/01/' + convert(varchar,YEAR(dateadd(m,1,DATEADD(yy,70,birthdate))))
from #people
以下是根据当前日期计算年龄的方法
select case
when cast(getdate() as date) = cast(dateadd(year, (datediff(year, '1996-09-09', getdate())), '1996-09-09') as date)
then dateDiff(yyyy,'1996-09-09',dateadd(year, 0, getdate()))
else dateDiff(yyyy,'1996-09-09',dateadd(year, -1, getdate()))
end as MemberAge
go
这是我计算年龄的方法: 选择DATEDIFF(yy,[DateOfBirth],GETDATE())+(DATEPART(MONTH,GETDATE())-DATEPART(MONTH,[DateOfBirth])小于0,然后-1,否则0结束)作为[用户]的年龄