9

それらの間の年数を見つけたい2つの日付がありますが、値を小数点以下2桁まで表示する必要があります。私は次のことを試しましたが、すべての日付が 1 年をカバーしていないため、常に 0 の値が返されます。

DATEDIFF(yy, @EndDateTime, i.mat_exp_dte)

次に、2 つの間の日数を見つけて 365 で割ろうとしましたが、それでも 0 が返されます。

DATEDIFF(dd, @EndDateTime, i.mat_exp_dte)/365

これを計算する方法について今混乱しています。DataDiff を別のデータ型に変換する必要がありますか?

4

4 に答える 4

21

代わりにこれを試してください。

DATEDIFF(dd, @EndDateTime, i.mat_exp_dte)/365.0

int を int で割ると、int が返されます。小数で割ると、結果として小数が得られます。

于 2012-05-02T10:16:23.233 に答える
2

.0 は浮動小数点数を表すため、計算には小数が含まれます。それがなければ、整数除算を計算します。

于 2012-11-18T11:25:35.843 に答える
0
SELECT
(YEAR(@EndDte) - YEAR(@StartDate) + 
(MONTH(@EndDate) - MONTH(@StartDate) /100.0 + 
(DAY(@EndDate) - DAY(@StartDate) /10000.0)

正確に 1 年か、1 年未満か、または複数かを判断する必要がある場合。(=1, <1, >1)

于 2019-05-28T08:42:32.567 に答える