我試圖通過調用以下函數來計算從他們的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