MSSQLを使用して、以下に詳述するように日付間の日数を計算する必要があります
各月は 30 日あると見なす必要があります (そうでない場合でも)。
2013 年 1 月 2 日から 2013 年 3 月 2 日までの差は
(30-2) + 30 + 2 days
where (30-2) will be for January
30 will be for February
2 will be for March
MSSQLを使用して、以下に詳述するように日付間の日数を計算する必要があります
各月は 30 日あると見なす必要があります (そうでない場合でも)。
2013 年 1 月 2 日から 2013 年 3 月 2 日までの差は
(30-2) + 30 + 2 days
where (30-2) will be for January
30 will be for February
2 will be for March
SQL Server で Oracle の MONTHS_BETWEEN に似た結果を得たいようです。
これは Teradata で作成した SQL 関数です。おそらく EXTRACT を YEAR/MONTH/DAY(date) に変更する必要があります
REPLACE FUNCTION MONTHS_BETWEEN(date1 DATE, date2 DATE)
RETURNS FLOAT
SPECIFIC months_between_DT
RETURNS NULL ON NULL INPUT
CONTAINS SQL
DETERMINISTIC
COLLATION INVOKER
INLINE TYPE 1
RETURN
(EXTRACT(YEAR FROM date1) * 12 + EXTRACT(MONTH FROM date1))
- (EXTRACT(YEAR FROM date2) * 12 + EXTRACT(MONTH FROM date2))
+ CASE
WHEN EXTRACT(MONTH FROM date2) <> EXTRACT(MONTH FROM date2+1) AND
EXTRACT(MONTH FROM date1) <> EXTRACT(MONTH FROM date1+1)
THEN 0
ELSE (CAST(1 AS FLOAT))/31 * (EXTRACT(DAY FROM date1) - EXTRACT(DAY FROM date2))
END
;
次に、結果に * 30 を掛けて、INT にキャストします。