如何查找两个日期之间的持续时间

sud*_*uds 3 sql t-sql date sql-server-2008-r2

我想找到两个日期列之间的持续时间.为此,我使用DATEDIFF函数分别查找数字年份和月份,但希望两个结果都在单列中.下面给出了两列.

start_dt      |    end_dt
06-Oct-2009      15-Jul-2011  
Run Code Online (Sandbox Code Playgroud)

需要的结果

Duration(years.months)
2.3
Run Code Online (Sandbox Code Playgroud)

Vik*_*dor 8

我认为没有开箱即用的API来提供您提到的格式的结果.您需要使用该DATEDIFF函数来获得所需的最小面额差异,然后将结果除以适当的值,以获得所需格式的持续时间.像这样的东西:

DECLARE @start DATETIME
DECLARE @end DATETIME
DECLARE @duration INT

SELECT @start = '2009-10-06', @end = '2011-07-15'
SELECT @duration = DATEDIFF(mm, @start, @end)
SELECT CONVERT(NVARCHAR, @duration / 12) + '.' + CONVERT(NVARCHAR, @duration % 12)
Run Code Online (Sandbox Code Playgroud)

通过编写一个将采用日期和最小面额的函数并以所需格式返回持续时间可以更好地实现这一点,因为它需要TSQL和普通SQL是不够的.