1

ユーザーが指定した月の日数を取得したい。私はこれを使用しており、2 月とうるう年を除くほとんどの月で機能します。29日ではなく28日と表示されています。これを解決できますか?

begin
declare @year int
declare @month int
select @year = 2012
select @month = DATEPART(mm,CAST('August'+ ' 2012' AS DATETIME))
select  datediff(day, 
        dateadd(day, 0, dateadd(month, ((@year - 2012) * 12) + @month - 1, 0)),
        dateadd(day, 0, dateadd(month, ((@year - 2012) * 12) + @month, 0))) as number_of_days

end

または、そうでない場合は、これを行う別の方法を教えてください。@yearandを使用する必要があり@month、日を見つけるためのコードは任意です。

4

4 に答える 4

2

これは良い解決策です。

DECLARE @year INT,@month INT

SET @year = 2011
SET @month = 2

SELECT DAY(EOMONTH(DATEFROMPARTS(@year,@month,1)))
于 2014-10-22T11:14:51.327 に答える