Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server成员年满65岁的日期_Sql Server - Fatal编程技术网

Sql server SQL Server成员年满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

我需要找到一个将年满65或19岁的会员的日期。 我有出生日期和年龄

需要显示他们将年满19岁或65岁的日期。

  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