我试图通过调用以下函数来计算从他们的DOB到个人的年龄,从而在表中填充字段。当我执行代码时,我收到以下错误:编码函数从DOB计算年龄
The error incorrect syntax near the keyword 'END'
我不知道为什么?请帮忙。
CREATE FUNCTION findAge
(@dateOfBirth DATE)
AS
RETURNS INT
BEGIN
RETURN (FLOOR(DATEDIFF(YEAR,@dateOfBirth, GETDATE()))
END
除了答案中指出的语法错误之外,此函数不会正确返回年龄,因为DATEDIFF只计算交叉日期部分边界的数量。考虑改为'返回(CAST(CONVERT(char(8),GETDATE(),112)as int) - CAST(CONVERT(char(8),@dateOfBirth,112)as int))/ 10000;' –
只需添加到@DanGuzman的回答:Peter Larsson对此有一个很好的写作。 http://www.sqlteam.com/article/datediff-function-demystified – etliens