边界条件问题中的 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。
谁能帮我理解以下内容,年份日期差异的结果为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)
--> 1DATEADD(YEAR, DATEDIFF(YEAR, @FromDate,@ToDate), @FromDate)
--> '2015-12-31'- 然后
CASE
然后returns1
所以,1-1 = 0。