Я пишу код, чтобы определить, сколько дней в году.Я пытаюсь сделать это действительно простым.Я нашел код, который я считаю очень чистым, чтобы определить високосный год.Я передаю введенную дату с помощью DATEPART (Y, @ Year) в программу високосного года и кое-что не получаю правильных результатов, поэтому я должен быть в своем коде SQL, чтобы обработать введенную дату, так как возвращается правильный бит.
Вот код високосного года:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[FN_Is_Leap_Year]
(
-- the parameters for the function here
@year int
)
RETURNS BIT
AS
BEGIN
RETURN (select case datepart(mm, dateadd(dd, 1, cast((cast(@year as varchar(4)) + '0228') as datetime)))
WHEN 2 THEN 1
ELSE 0 END)
END
Вот код, который я написал для обработки даты ввода и получения # дней в году:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[FN_Get_Days_In_Year]
(
@InputDT varchar(10)
)
RETURNS int
AS
BEGIN
DECLARE @Result int,
@Year int
Set @Result =
CASE
WHEN dbo.FN_Is_Leap_Year(Datepart(yyyy,@Year)) = 0 Then 365
WHEN dbo.FN_Is_Leap_Year(Datepart(yyyy,@Year)) = 1 Then 366
END
RETURN @Result
END