如何获得两个日期时间值之间的差异?

时间:2011-11-14 02:24:48

标签: sql sql-server-2008 tsql

我很难获得两个日期时间值之间的区别。

例如:

col1               col2 
----------         ----------
11-04-2011         22-05-2033
12-05-2010         24-06-2045

,结果集应该是这样的:

11-01-2022

12-01-2035

感谢所有人,

Shashra

3 个答案:

答案 0 :(得分:1)

使用DATEDIFF,找出两个日期之间的天数。

此值的一半。

然后使用DATEADD并将一半的日期添加到第一个日期。

declare @d1 datetime
,@d2 datetime

set @d1 = '11/4/2011'
set @d2 = '22/5/2033'

SELECT DATEADD(d, (DATEDIFF(d, @d1, @d2)/2), @d1)

因此,在您的查询中,您将使用:

SELECT DATEADD(d, (DATEDIFF(d, col1, col2)/2), col1)
FROM [Table]

答案 1 :(得分:0)

可能您的客户对日期(特定年,月和日)与持续时间(数量年,月,日)之间的差异感到困惑。从另一个日期中减去一个日期会导致后者,而不是前者。

这种混淆比人们常说的更常见。

答案 2 :(得分:0)

好吧,如果你真的想这样做,一个解决方案就是:

  1. 将每个日期的日,月和年值记录到不同的变量中;
  2. 减去每天,每月和每年的变量;
  3. 将年份增加2000年;
  4. 与日期,月份和年份确定日期。
  5. 您可能需要使用cursor分别获取每一行。

相关问题