我有两个日期,我想在其中找到它们之间的年数,但是我需要将值显示到小数点后两位。我尝试了以下方法,但我总是返回 0 的值,因为我的所有日期都不涵盖一整年:
DATEDIFF(yy, @EndDateTime, i.mat_exp_dte)
然后我尝试找到两者之间的天数,然后将其除以 365,但这仍然返回 0:
DATEDIFF(dd, @EndDateTime, i.mat_exp_dte)/365
现在对如何计算感到困惑。我需要将 DataDiff 转换为不同的数据类型吗?
我有两个日期,我想在其中找到它们之间的年数,但是我需要将值显示到小数点后两位。我尝试了以下方法,但我总是返回 0 的值,因为我的所有日期都不涵盖一整年:
DATEDIFF(yy, @EndDateTime, i.mat_exp_dte)
然后我尝试找到两者之间的天数,然后将其除以 365,但这仍然返回 0:
DATEDIFF(dd, @EndDateTime, i.mat_exp_dte)/365
现在对如何计算感到困惑。我需要将 DataDiff 转换为不同的数据类型吗?
试试这个。
DATEDIFF(dd, @EndDateTime, i.mat_exp_dte)/365.0
将 int 与 int 相除返回 int。除以小数,您将得到一个小数。
.0 代表浮点数,因此计算包括小数。没有它,您将计算整数除法。
如果您想要一个更准确的版本来说明闰年,那么您可以这样做:
cast(DATEDIFF(dd, @EndDateTime, i.mat_exp_dte) as float)
/datediff(dd,@EndDateTime,dateadd(yy,1,@EndDateTime))
SELECT
(YEAR(@EndDte) - YEAR(@StartDate) +
(MONTH(@EndDate) - MONTH(@StartDate) /100.0 +
(DAY(@EndDate) - DAY(@StartDate) /10000.0)
如果您需要确定是否正好有一年、少于一年或多于一年。(=1, <1, >1)