2016-07-12 7 views
-1

の数を見つけるために:SQL Serverの私はSQL Serverで(現在の月を除く)2つの日付の間の月数を見つけるために、クエリをやっヶ月

SELECT 
    (DATEDIFF(MONTH, DATEADD(MONTH, 1, '2016-02-20 00:00:00.000') - 
    DAY(DATEADD(MONTH, 1, '2016-02-20 00:00:00.000')), '2016-12-31 00:00:00.000')) 

上記は、どのように行う.. 10を返します。私たちはOracleでこれを達成していますか?

+0

「今月を除く」とはどういう意味ですか? – mathguy

答えて

0

私は推測する - 少なくとも10グラムにし、上 - 正しい機能はさらに、これはあなたの日数に差を与える二つの日付

SELECT [date2] - [date1] FROM dual 

間の差を計算することが可能である

SELECT MONTHS_BETWEEN([date1],[date2]) FROM dual 

です。

0

月の違いを数えるにはいくつかの方法があります。 良い出発点はmonths_betweenのようになります。

SQL> with testDates (date1, date2) as 
    2 (
    3 select date '2016-12-31', date '2016-02-20' from dual union all 
    4 select date '2016-02-01', date '2016-01-31' from dual union all 
    5 select date '2016-12-30', date '2016-11-30' from dual union all 
    6 select date '2016-12-29', date '2016-11-30' from dual 
    7 ) 
    8 select date1, date2, months_between(date1, date2) diff, floor(months_between(date1, date2) ) floor_diff 
    9 from testDates; 

DATE1  DATE2   DIFF FLOOR_DIFF 
--------- --------- ---------- ---------- 
31-DIC-16 20-FEB-16 10,3548387   10 
01-FEB-16 31-GEN-16 ,032258065   0 
30-DIC-16 30-NOV-16   1   1 
29-DIC-16 30-NOV-16 ,967741935   0 
0

右クエリが試すOracle11g..Pleaseで2つの日付の間ヶ月の合計を見つけるためにそれ

(0)(SELECT日から をTOTAL_MONTHS

SELECT COUNT '2015年1月5日' START_DATE、DUAL FROM DATE '2015年12月15日' END_DATE ) CONNECT BY LEVEL < = MONTHS_BETWEEN( TRUNC(END_DATE、 'MM')、 TRUNC(START_DATE、 'MM') ) +1

関連する問題