Sql 想在某一年内获得50岁以上的EMP名单吗

Sql 想在某一年内获得50岁以上的EMP名单吗,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我已经能够拉到那里的年龄,但当我做一个“50”我得到错误的地方。当我翻出最后一部分时,我知道每个人和他们的年龄。我只想要今年达到50的emp。从现在起每年都能使用它。这是针对sql server 2008的 SELECT FLOOR((CAST (GetDate() AS INTEGER) - CAST([Employee_Date_List4] AS INTEGER)) / 365.25) AS Age ,[Employee_Name] ,[Employee_Date_List4] from

我已经能够拉到那里的年龄,但当我做一个“50”我得到错误的地方。当我翻出最后一部分时,我知道每个人和他们的年龄。我只想要今年达到50的emp。从现在起每年都能使用它。这是针对sql server 2008的

SELECT FLOOR((CAST (GetDate() AS INTEGER) - CAST([Employee_Date_List4] AS INTEGER)) / 365.25) AS Age 
,[Employee_Name]
,[Employee_Date_List4]
from [Forefront].[dbo].[PR_EMPLOYEE_MASTER_1_MC] 
where Company_Code = 'tmg' 
--and (select FLOOR((CAST (GetDate() AS INTEGER) - CAST([Employee_Date_List4] AS INTEGER)) / 365.25) 
--from [Forefront].[dbo].[PR_EMPLOYEE_MASTER_1_MC])  = '50'
你的表情:

FLOOR((CAST (GetDate() AS INTEGER) - CAST([Employee_Date_List4] AS INTEGER)) / 365.25) AS Age
不是年龄的好表达方式。您通常希望查看一年中的当前日期是在此人出生日期的一年中的某一天还是之后

这就是说,要判断谁今年将年满50岁很容易:

你的表情:

FLOOR((CAST (GetDate() AS INTEGER) - CAST([Employee_Date_List4] AS INTEGER)) / 365.25) AS Age
不是年龄的好表达方式。您通常希望查看一年中的当前日期是在此人出生日期的一年中的某一天还是之后

这就是说,要判断谁今年将年满50岁很容易:

:

有关更多信息,请查看:


有关更多信息,请查看

您只需使用
datediff(yy,GETDATE(),Employee_Date_List4)
您需要检查主查询和子查询中记录的ID是否相同。最好使用CTE。这里有一篇关于计算年龄的好文章。您可以简单地使用
datediff(yy,GETDATE(),Employee_Date_List4)
您需要检查主查询和子查询中记录的ID是否相同。最好使用CTE。这里有一篇关于计算年龄的好文章
DATEDIFF
不是计算年龄的好方法
DATEDIFF(2013年12月31日,2014年1月1日)
会给你1,即使他们只相隔1天。
DATEDIFF
不是计算年龄的好方法
DATEDIFF(2013年12月31日,2014年1月1日)
将为您提供1,即使它们仅相隔1天。
SELECT DATEDIFF(year, Employee_Date_List4, GETDATE()) AS Age,
   Employee_Name, Employee_Date_List4
FROM PR_EMPLOYEE_MASTER_1_MC
WHERE Company_Code = 'tmg' 
AND DATEDIFF(year, Employee_Date_List4, GETDATE()) = 50;