如何在SQL中以年为单位计算年龄

问题描述 投票:-4回答:3

需要创建一个基本的“年龄计算器”功能,以在“人口表”的“年龄”字段上计算以岁为单位的年龄。

该函数应称为agecalculator,它需要1个日期,并根据现在的日期以年为单位计算年龄,并且必须返回一个整数。

您可以在测试时查询人员表,但查询必须仅包含最终提交时的功能。

人员表架构

id
name
age

这是我的代码:

select convert(int,DATEDIFF(d, '1933-10-31', getdate())/365.25)
sql
3个回答
0
投票

尝试一下:

 DECLARE @DOB DATETIME ='12/29/1980'

 SELECT @DOB 'Date of Birth', GETDATE() 'Current Date',

 DATEDIFF(YEAR,@DOB,GETDATE()) -
 (CASE WHEN DATEADD(YY,DATEDIFF(YEAR,@DOB,GETDATE()),@DOB) > GETDATE() 
    THEN 1
    ELSE 0 
      END) 'Age in Years'

0
投票

您需要创建一个函数,因此请使用CREATE FUNCTION语句。

尝试一下:

CREATE FUNCTION ageCalculator (a timestamp) RETURNS integer AS $$
BEGIN
  RETURN (SELECT date_part('year',age(a)))::int;
END;
 $$ LANGUAGE plpgsql;

或:

CREATE FUNCTION ageCalculator (a timestamp) 
RETURNS integer AS $$
BEGIN
  RETURN (SELECT EXTRACT(year FROM age(a)))::int;
END;
 $$ LANGUAGE plpgsql;

-1
投票
DECLARE @DOB DATETIME ='08/14/1980'

 SELECT @DOB 'Date of Birth', GETDATE() 'Current Date',

 DATEDIFF(YEAR,@DOB,GETDATE()) -
 (CASE WHEN DATEADD(YY,DATEDIFF(YEAR,@DOB,GETDATE()),@DOB) > GETDATE() 
    THEN 1
    ELSE 0 
      END) 'Age in Years'
© www.soinside.com 2019 - 2024. All rights reserved.