边界条件问题中的 DATEDIFF 函数

DATEDIFF function in the boundary conditions problem

谁能帮我理解以下内容,年份日期差异的结果为0, 但我认为根据条件结果应该为 1,因为 DATEADD 函数将 return 2015-12-31,并且它大于 @ToDate 2015-01-01。 这是文章的 link,第一个示例 https://sqlhints.com/2015/07/10/how-to-get-difference-between-two-dates-in-years-months-and-days-in-sql-server/

DECLARE @FromDate DATETIME = '2014-12-31', 
        @ToDate DATETIME = '2015-01-01'
SELECT @FromDate 'From Date', @ToDate 'To Date',
 DATEDIFF(YEAR, @FromDate, @ToDate)
   -
 (CASE
   WHEN DATEADD(YEAR, 
           DATEDIFF(YEAR, @FromDate,@ToDate), @FromDate)
       > @ToDate THEN 1 
         ELSE 0 END) 'Date difference in Years'

结果: enter image description here

这对我来说很明显 returns 0:

  • DATEDIFF(YEAR, @FromDate, @ToDate) --> 1
  • DATEADD(YEAR, DATEDIFF(YEAR, @FromDate,@ToDate), @FromDate) --> '2015-12-31'
  • 然后CASE然后returns1

所以,1-1 = 0。