2011-11-14 177 views
2

我很难得到两个日期时间值之间的差异。如何获取两个日期时间值之间的差异?

例如:

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

和结果集应该是这样的:

11-01-2022 

12-01-2035 

感谢所有,

Shashra

+3

我很困惑,你所说的有什么区别。对我而言,如果你发现2033年和2011年之间的差异,答案应该是0022,而不是2022.也许如果你举了一个例子来说明你使用的是什么,我们可能会更有帮助。 – CHawk

+0

当然你是正确的年份应该是0022但如果公司想要在这些年的差异。我的意思是说,这两年的差距是22年,但它在21世纪是正确的。所以我们需要得到世纪和年(差异)。 – Shahsra

+0

恩,没有。差异没有世纪。这是基本的数学。 2033年减去2011年是22年,而不是2022年。你的问题绝对没有意义,你的评论也没有解释。 :)我认为你需要回去让你的客户/公司解释他们想要的东西,因为你必须误解。答案可能是2022年的唯一方法是,如果问题是“我如何找到2011年和2033年之间的年数,将差异除以2,并将其添加到2011年?” –

回答

0

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

这种混淆比人们通常认为的更为常见。

0

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

  1. 获取每个日期不同变量的日,月,年值;
  2. 减去每天,每月和每年的变量;
  3. 将2000年增加到当年产生的价值;
  4. 与生成的日期,月份和年份进行约会。

您可能需要使用cursor来分别提取每一行。

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]