Sql server SQL Server成员年满65岁的日期
我需要找到一个将年满65或19岁的会员的日期。 我有出生日期和年龄 需要显示他们将年满19岁或65岁的日期。Sql server SQL Server成员年满65岁的日期,sql-server,Sql Server,我需要找到一个将年满65或19岁的会员的日期。 我有出生日期和年龄 需要显示他们将年满19岁或65岁的日期。 Id DOB Age Date_Turning_65_or_19 -------------------------------------------- 2 1952-09-30 64 2017-09-30 我需要最后一列作为结果 请帮我做这件事 我正在尝试不同的公式,但它不起作用 我试过这样的东西 CASE WHEN
Id DOB Age Date_Turning_65_or_19
--------------------------------------------
2 1952-09-30 64 2017-09-30
我需要最后一列作为结果
请帮我做这件事
我正在尝试不同的公式,但它不起作用
我试过这样的东西
CASE
WHEN MONTH(GETDATE()) <= MONTH(DateOfBirth)
AND DATEDIFF(YEAR, DateOfBirth, GETDATE()) = '65'
THEN CONVERT(DATE, CONVERT(VARCHAR(2), MONTH( DateOfBirth)) + '/' + CONVERT(VARCHAR(2), DAY(DateOfBirth)) + '/' + CONVERT(VARCHAR(4), YEAR(GETDATE())))
WHEN DATEDIFF(YEAR, '19510901', GETDATE()) = '64'
THEN CONVERT(DATE, CONVERT(VARCHAR(2), MONTH( DateOfBirth)) + '/' + CONVERT(VARCHAR(2), DAY(DateOfBirth)) + '/' + CONVERT(VARCHAR(4), YEAR(GETDATE() + 365.25)))
案例
当月份(GETDATE())select*时,
dateadd(年份,19,dob)
选择*,
dateadd(年份,19,dob)
这不就是:DATEADD(YEAR,65,DateOfBirth)
?DATEDIFF
总是返回一个数值-为什么要将其与字符串进行比较DATEDIFF(YEAR,'19510901',GETDATE())='64'
-这应该是真正的DATEDIFF(YEAR,'19510901',GETDATE())=64
(没有单引号!)我的实际要求是当你传递一个参数时(表示我需要65岁的人),我需要那些有日期的人。这不就是:DATEADD(YEAR,65,DateOfBirth)
?DATEDIFF
始终返回一个数值-为什么要将其与字符串进行比较DATEDIFF(YEAR,'19510901',GETDATE())='64'
-这应该真的读起来是DATEDIFF(YEAR,'19510901',GETDATE())=64
(没有单引号!)我的实际要求是当你传递一个参数时(即我需要65岁的人),我需要那些有日期的人
select *,
case when dateadd(year, 19, dob) < getdate()
then dateadd(year, 19, dob)
else dateadd(year, 65, dob)
end
from your_table