我希望在该人年满70岁之后获得该月的第一天。如何在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)
答案 0 :(得分:1)
declare @dob datetime = '1954-06-08'
declare @age int = 70
select DATEADD(m, DATEDIFF(m, -1, DATEADD(yy, @age, @dob)), 0)
答案 1 :(得分:0)
你可以像这样使用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)
基本上,你添加70年,下个月找到并将当天替换为本月的第一天。
答案 2 :(得分:0)
您可以使用datediff计算他们的年龄,然后添加日期以查找他们的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
答案 3 :(得分:0)
以下是根据当前日期计算年龄的方法。
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
答案 4 :(得分:0)
这是我计算年龄的方法:
SELECT DATEDIFF(yy,[DateOfBirth],GETDATE())+(当DATEPART(MONTH,GETDATE())-DATEPART(MONTH,[DateOfBirth])<0 THEN -1 ELSE 0 END)时的年龄用户]