sql - 如何找到两个日期之间的持续时间

标签 sql tsql date sql-server-2008-r2

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

start_dt      |    end_dt
06-Oct-2009      15-Jul-2011  

需要的结果
Duration(years.months)
2.3

最佳答案

我认为没有开箱即用的 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)

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

关于sql - 如何找到两个日期之间的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12775480/

相关文章:

MySQL IF...THEN 后跟查询语句

mysql - 如何从 SQL 中的表中选择唯一行?

mysql - 根据 If 语句选择自定义列

javascript - javascript 中的当前日期

sql - 加入 3 个表 Hibernate & JPA

mysql - MAX() 和 GROUP BY,需要整个结果的 COUNT(*)

tsql - Sql - 基于日期的列检查约束

sql - 如何将查询的 CTE 输出保存到临时表或表变量中

java - 使用 JodaTime 添加月份?

mysql - 跨多个表查找记录的最小和最大日期