相关文章推荐
慷慨的柑橘  ·  【NeurIPS ...·  1 月前    · 
果断的毛豆  ·  SQLServer ...·  1 年前    · 

将年份换算成小数的DateDiff

9 人关注

我有两个日期,我想找出它们之间的年数,但是我需要显示小数点后两位的数值。 我尝试了以下方法,但我总是得到一个0的返回值,因为我所有的日期都不包括一整年。

DATEDIFF(yy, @EndDateTime, i.mat_exp_dte)

然后我试着找出两者之间的天数,然后除以365,但这仍然返回0。

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

我现在很困惑,不知道该如何计算。 我是否需要将DataDiff转换成不同的数据类型?

sql-server-2008
tsql
datediff
chrissy p
chrissy p
发布于 2012-05-02
4 个回答
Mikael Eriksson
Mikael Eriksson
发布于 2019-05-30
已采纳
0 人赞同

试试这个。

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

用一个int除以一个int,返回的是int。与一个小数相除,你将得到一个小数作为结果。

在sql中,有什么命令可以削减(!--不是四舍五入)小数位?(比方说2)?1.12345 --->1.12
@RoyiNamir - 最后一次尝试:) select round(1.19999, 2, 1)
select CAST ( round(1.19999, 2, 1) AS numeric(3, 2))........,但我觉得它太长了...:)
这还没有考虑到闰年。这是一个小的调整,但仍然需要考虑进去。
Diego
Diego
发布于 2019-05-30
0 人赞同

.0代表浮点数,因此计算时包括小数。如果没有它,你计算的是整数除法。

Isaac Fratti
Isaac Fratti
发布于 2019-05-30
0 人赞同

如果你想要一个更准确的版本,考虑到闰年,那么你可以这样做。

cast(DATEDIFF(dd, @EndDateTime, i.mat_exp_dte) as float)
/datediff(dd,@EndDateTime,dateadd(yy,1,@EndDateTime))
Davor
Davor
发布于 2019-05-30
0 人赞同
SELECT