Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 编码功能根据出生日期计算年龄_Sql_Sql Server - Fatal编程技术网

Sql 编码功能根据出生日期计算年龄

Sql 编码功能根据出生日期计算年龄,sql,sql-server,Sql,Sql Server,我试图通过调用下面的函数来填充表中的一个字段,以根据其出生日期计算此人的年龄。执行代码时,我收到以下错误: 错误:关键字“END”附近的语法不正确 我不知道为什么?请帮忙 CREATE FUNCTION findAge (@dateOfBirth DATE) AS RETURNS INT BEGIN RETURN (FLOOR(DATEDIFF(YEAR,@dateOfBirth, GETDATE())) END 你错过了一个结束语。谢谢你的帮助,我觉得自己是个白痴(我自己:)谢谢你的帮助,我

我试图通过调用下面的函数来填充表中的一个字段,以根据其出生日期计算此人的年龄。执行代码时,我收到以下错误:

错误:关键字“END”附近的语法不正确

我不知道为什么?请帮忙

CREATE FUNCTION findAge
(@dateOfBirth DATE)
AS
RETURNS INT
BEGIN
RETURN (FLOOR(DATEDIFF(YEAR,@dateOfBirth, GETDATE()))
END

你错过了一个结束语。

谢谢你的帮助,我觉得自己是个白痴(我自己:)谢谢你的帮助,我觉得自己是个白痴(我自己:)除了答案中指出的语法错误,此函数将无法正确返回年龄,因为DATEDIFF仅统计跨越的datepart边界数。而不是考虑<代码>返回(CAST(Char(char(8),GETDATE(),112)为int)-CAST(转换(char(8),@ DeaOfBoin,112)为int)/10000;<代码>只需补充一下@DanGuzman的答案:Peter Larsson对此有一篇精彩的评论。
CREATE FUNCTION findAge (@dateOfBirth DATE)
RETURNS INT
AS
BEGIN
  DECLARE @Age INT;

  SET @Age = FLOOR(DATEDIFF(YEAR,@dateOfBirth, GETDATE()));
  RETURN @Age;
END
CREATE FUNCTION findAge (@dateOfBirth DATE)
RETURNS INT
AS
BEGIN
  DECLARE @Age INT;

  SET @Age = FLOOR(DATEDIFF(YEAR,@dateOfBirth, GETDATE()));
  RETURN @Age;
END