获取年份中两个日期之间的差异
问题描述:
我正在使用具有StartDate和EndDate字段的表。我需要找出几年之间的差异。获取年份中两个日期之间的差异
示例: 的StartDate = 2017年1月1日 结束日期= 2017年12月31日
我期望的日期差值结果= 1。
另外,我想将它四舍五入到最接近的整数。
示例: 的StartDate = 2017年1月1日 结束日期= 2017年11月30日
我期望的日期差值结果= 1。
使用datediff函数,我能够得到结果,但它不是四舍五入到最接近的整数。
例子查询: 我听到6年份甚至那边在干什么月份/ 12将低于5.5:
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)
答
到目前为止,下面的查询似乎工作正常。我的错误是我除以12而不是12.0,因为四舍五入正确工作。谁知道! :
select
Round((DATEDIFF(mm, '01/01/2016', '07/1/2017')
+ CASE WHEN abs(DATEPART(day, '01/01/2016') - DATEPART(day, '06/30/2017')) > 15 THEN 1 ELSE 0 END)/12.0, 0)
答
DECLARE @startdate DATETIME = '1-1-2017',
@enddate DATETIME = '12-31-2018'
SELECT @startdate as StartDate, @enddate as EndDate,
DATEDIFF(YEAR, @startdate, @enddate)
-
(CASE
WHEN DATEADD(YEAR,
DATEDIFF(YEAR, @startdate,@enddate), @startdate)
> @enddate THEN 1
ELSE 0 END) 'Date difference in Years'
使用此代码,我希望它会帮助你。
+0
问题与您的代码是如果您使用07-01-2018作为@enddate,它仍然会给你1年而不是2 。 – NonProgrammer
您是否尝试过使用'ROUND'功能? – cwanjt
我尝试了一轮函数,但它保持返回0而不是1。我希望看到0,如果返回小于.5,如果超过.5返回,则返回1。我可以似乎做1. – NonProgrammer
我刚刚意识到我的错误。我没有正确使用循环函数:我认为这将起作用:select round(1.3,0) – NonProgrammer