3

2 か月と年を考えると。言及された日はありません。これら 2 つの日付の差を SQL で計算する必要があります。SQL サーバー DB の列の例。

MonthFROM    YearFROM   MonthTo  YearTO

12           2010       1        2012

出力は 14 か月である必要があります。

4

4 に答える 4

2

この方法で日付を保持するのは得策ではありません。

SELECT DATEDIFF(mm, CAST(YearFROM as varchar) + RIGHT('0' + CAST(MonthFROM as varchar), 2) + '01',
                      CAST(YearTO as varchar) + RIGHT('0' + CAST(MonthTO as varchar), 2) + '01')
于 2014-02-12T18:46:36.010 に答える
1

次のSQL フィドル:

SELECT DATEDIFF(month, 
         CONVERT(VARCHAR(19),
                 CAST(MonthFROM as varchar) + '/01/' + CAST(YearFROM as varchar),
                 101), 
         CONVERT(VARCHAR(19), 
                 CAST(MonthTo as varchar) + '/01/' + CAST(YearTO as varchar), 
                 101)) + 1 AS MonthPast
FROM MyTable;

結果は次のようになります。

MONTHPAST
14

実際の月の差はあり13ますが14、結果として期待どおりの結果が得られました。計算が間違っていて、本当に必要な場合は、クエリから13を削除してください。+ 1

于 2014-02-12T18:47:04.497 に答える
0

SQL Server 2012 を使用している場合、これを行う簡単な方法は次のとおりです。

SELECT DATEDIFF(month, DATEFROMPARTS (YearFROM, MonthFROM, 01),
                DATEFROMPARTS (YearTO, MonthTo, 01))
FROM YourTable

SQL Fiddleのデモ

于 2014-02-12T19:28:20.513 に答える