需要创建一个基本的年龄计算器功能,用于计算人员表年龄字段的年龄。
该函数应该被称为agecalculator,它需要花费1个日期并根据NOW的日期计算年龄,并且必须返回一个整数。
您可以在测试时查询人员表,但查询必须仅包含最终提交的功能。
人员表架构
BaseMixin
这是我的代码:
id
name
age
答案 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'