在几年中获得两个日期之间的差异

时间:2017-08-30 21:33:38

标签: sql-server-2008-r2 rounding datediff

我正在使用具有StartDate和EndDate字段的表。我需要在几年之间找到差异。

实施例: StartDate = 1/1/2017 EndDate = 12/31/2017

我希望结果= 1表示日期差异。

另外,我想把它四舍五入到最接近的整数。

实施例: StartDate = 1/1/2017 EndDate = 11/30/2017

我希望结果= 1表示日期差异。

使用datediff函数,我可以得到结果,但它没有四舍五入到最接近的整数。

示例查询: 即使65个月/ 12小于5.5,我也要6年了。

select (DATEDIFF(yy, '01/01/2016', '5/31/2021')
+ CASE WHEN abs(DATEPART(day, '01/01/2016') - DATEPART(day, '05/31/2021')) > 15 THEN 1 ELSE 0 END) 
select (DATEDIFF(mm, '01/01/2016', '05/31/2021')
+ CASE WHEN abs(DATEPART(day, '01/01/2016') - DATEPART(day, '05/31/2021')) > 15 THEN 1 ELSE 0 END) 

3 个答案:

答案 0 :(得分:1)

.row1-header

使用此代码,希望它对您有所帮助。

答案 1 :(得分:0)

到目前为止,以下查询似乎工作正常。我的错误是我除了12而不是12.0来进行舍入才能正常工作。谁知道! :

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

答案 2 :(得分:0)

这可能有点旧,但是在使用Oracle SQL Developer时,可以使用以下命令。只需在下面添加您的日期即可。我正在使用DateTime。这用于获取0到10之间的年份。

TRUNC((MONTHS_BETWEEN(<DATE_ONE>, <DATE_TWO>) * 31) / 365) > 0 and TRUNC((MONTHS_BETWEEN(<DATE_ONE>, <DATE_TWO>) * 31) / 365) < 10