如何在SQL中计算年龄

时间:2017-01-17 22:07:18

标签: sql

需要创建一个基本的年龄计算器功能,用于计算人员表年龄字段的年龄。

  

该函数应该被称为agecalculator,它需要花费1个日期并根据NOW的日期计算年龄,并且必须返回一个整数。

     

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

人员表架构

BaseMixin

这是我的代码:

id
name
age

3 个答案:

答案 0 :(得分: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'

答案 1 :(得分: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;

答案 2 :(得分:-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'