9

我有两个日期,我想在其中找到它们之间的年数,但是我需要将值显示到小数点后两位。我尝试了以下方法,但我总是返回 0 的值,因为我的所有日​​期都不涵盖一整年:

DATEDIFF(yy, @EndDateTime, i.mat_exp_dte)

然后我尝试找到两者之间的天数,然后将其除以 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 回答
2

如果您想要一个更准确的版本来说明闰年,那么您可以这样做:

cast(DATEDIFF(dd, @EndDateTime, i.mat_exp_dte) as float)
/datediff(dd,@EndDateTime,dateadd(yy,1,@EndDateTime))
于 2018-10-17T14:08:30.880 回答
0
SELECT
(YEAR(@EndDte) - YEAR(@StartDate) + 
(MONTH(@EndDate) - MONTH(@StartDate) /100.0 + 
(DAY(@EndDate) - DAY(@StartDate) /10000.0)

如果您需要确定是否正好有一年、少于一年或多于一年。(=1, <1, >1)

于 2019-05-28T08:42:32.567 回答