関数[dbo].[MyAge]があります。
CREATE FUNCTION [dbo].[MyAge]
(
@DOB AS DATE,
@EndDate as DATE = '2999-01-01'
)
RETURNS TINYINT
AS
BEGIN
DECLARE @Result as TINYINT
IF @EndDate = '2999-01-0'
SET @EndDate = GETDATE()
IF @DOB >= @EndDate
SET @Result = 0
ELSE
BEGIN
IF (MONTH(@EndDate)*100)+DAY(@EndDate) >= (MONTH(@DOB)*100)+DAY(@DOB)
SET @Result = DATEDIFF(Year,@DOB,@EndDate)
ELSE
SET @Result = DATEDIFF(Year,@DOB,@EndDate)-1
END
RETURN @Result
END
しかし、選択すると、トピックの名前のようなエラーが表示されます。文字列から日時を変換する際に変換に失敗しました
DECLARE @dob datetime
SET @dob='19560109'
SELECT [dbo].[MyAge]( @dob,default )
しようとしSET @dob='1956-01-09'
ますが、同じ結果が表示されSET DATEFORMAT ymd
ます。
そして、この関数を再構築して、月と日で年齢を計算したいのですが、エラーのために実行できません。