需要创建一个基本的“年龄计算器”功能,以在“人口表”的“年龄”字段上计算以岁为单位的年龄。
该函数应称为agecalculator,它需要1个日期,并根据现在的日期以年为单位计算年龄,并且必须返回一个整数。
您可以在测试时查询人员表,但查询必须仅包含最终提交时的功能。
人员表架构
id
name
age
这是我的代码:
select convert(int,DATEDIFF(d, '1933-10-31', getdate())/365.25)
尝试一下:
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'
您需要创建一个函数,因此请使用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;
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'