入力:
Month, Year, GraceMonth.
すべて整数です。
何をする必要がありますか?
最初に月、年、日から日付を作成し (現在の日付から取得する必要があります)、それに GraceMonth を追加する必要があります。GraceMonth を追加した後、明らかに新しい日付を取得します。次に、構築された日付から、それを現在の日付と比較する必要があります。
何を試しましたか?
例(私は部品で示しています)
DECLARE @Month INT = 11
DECLARE @YEAR INT = 2012
DECLARE @Graceperiod INT = 2
SELECT
[Construct Initial Date] = DATEADD(mm, (@YEAR - 1900) * 12 + @Month - 1 , DAY(GETDATE()) - 1) --construct initial date
,[Add Grace period] =DATEADD(mm,@Graceperiod,DATEADD(mm, (@YEAR - 1900) * 12 + @Month - 1 , DAY(GETDATE()) - 1)) --add grace month
,[DateDiff] = DATEDIFF
(
DAY,
DATEADD(mm, (@YEAR - 1900) * 12 + (@Month + @Graceperiod) - 1 , DAY(GETDATE()) - 1),
GETDATE()
) -- datediff
結果
Construct Initial Date Add Grace period DateDiff
2012-11-14 00:00:00.000 2013-01-14 00:00:00.000 -122
あなたの答えが正しければ、あなたは何を探していますか?
これ以外に良いアプローチはありますか?キャストなしで簡潔であればあるほど良い。また、難しい部分が含まれている場合は、説明を提供してください (例: 難しい数学的計算など)。
前もって感謝します。