获取年份中两个日期之间的差异
Get difference between two dates in Years
我正在使用具有 StartDate 和 EndDate 字段的 table。我需要找出那几年之间的区别。
示例:
开始日期 = 1/1/2017
结束日期 = 12/31/2017
我希望日期差异的结果 = 1。
此外,我想将它四舍五入到最接近的整数。
示例:
开始日期 = 1/1/2017
结束日期 = 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)
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'
使用此代码,希望对您有所帮助。
到目前为止,以下查询似乎工作正常。我的错误是我除以 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)
这可能有点旧,但是在使用 Oracle SQL Developer 时,您可以使用以下内容。只需在下面添加您的日期。我正在使用日期时间。这用于获取 0 到 10 之间的年份。
TRUNC((MONTHS_BETWEEN(<DATE_ONE>, <DATE_TWO>) * 31) / 365) > 0 and TRUNC((MONTHS_BETWEEN(<DATE_ONE>, <DATE_TWO>) * 31) / 365) < 10
我正在使用具有 StartDate 和 EndDate 字段的 table。我需要找出那几年之间的区别。
示例: 开始日期 = 1/1/2017 结束日期 = 12/31/2017
我希望日期差异的结果 = 1。
此外,我想将它四舍五入到最接近的整数。
示例: 开始日期 = 1/1/2017 结束日期 = 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)
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'
使用此代码,希望对您有所帮助。
到目前为止,以下查询似乎工作正常。我的错误是我除以 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)
这可能有点旧,但是在使用 Oracle SQL Developer 时,您可以使用以下内容。只需在下面添加您的日期。我正在使用日期时间。这用于获取 0 到 10 之间的年份。
TRUNC((MONTHS_BETWEEN(<DATE_ONE>, <DATE_TWO>) * 31) / 365) > 0 and TRUNC((MONTHS_BETWEEN(<DATE_ONE>, <DATE_TWO>) * 31) / 365) < 10