我很难得到两个日期时间值之间的差异。如何获取两个日期时间值之间的差异?
例如:
col1 col2
---------- ----------
11-04-2011 22-05-2033
12-05-2010 24-06-2045
和结果集应该是这样的:
11-01-2022
12-01-2035
感谢所有,
Shashra
我很难得到两个日期时间值之间的差异。如何获取两个日期时间值之间的差异?
例如:
col1 col2
---------- ----------
11-04-2011 22-05-2033
12-05-2010 24-06-2045
和结果集应该是这样的:
11-01-2022
12-01-2035
感谢所有,
Shashra
可能你的客户感到困惑日期(一个特定年,月和日)和持续时间(年,月,日的数量)。从另一个日期减去一个日期导致后者,而不是前者。
这种混淆比人们通常认为的更为常见。
好吧,如果你真的想这样做的一个解决方案是:
您可能需要使用cursor来分别提取每一行。
使用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]
我很困惑,你所说的有什么区别。对我而言,如果你发现2033年和2011年之间的差异,答案应该是0022,而不是2022.也许如果你举了一个例子来说明你使用的是什么,我们可能会更有帮助。 – CHawk
当然你是正确的年份应该是0022但如果公司想要在这些年的差异。我的意思是说,这两年的差距是22年,但它在21世纪是正确的。所以我们需要得到世纪和年(差异)。 – Shahsra
恩,没有。差异没有世纪。这是基本的数学。 2033年减去2011年是22年,而不是2022年。你的问题绝对没有意义,你的评论也没有解释。 :)我认为你需要回去让你的客户/公司解释他们想要的东西,因为你必须误解。答案可能是2022年的唯一方法是,如果问题是“我如何找到2011年和2033年之间的年数,将差异除以2,并将其添加到2011年?” –