如何在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

我想知道这个人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 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结束)作为[用户]的年龄