日期:2014-05-17  浏览次数:21204 次

关于两个时间差的问题
请教:两个字段     Time   入职时间      
                                Year   现在时间
            求出两个时间差,用年表示,不满一年的用0表示。
谢谢了!


------解决方案--------------------
楼上正解!可以结贴了!
------解决方案--------------------
这个问题正确的思路应该是:先计算出现在时间和入职时间的年差值,然后
让入职时间加上这个年差值,最后比较这个新的时间和现在时间的年差值,
即是结果。根据楼上的,下面是一个小例子。
-------------------------------
<%
dim a,b,c,d,e
b= "2006-6-10 " '入职时间
a= "2007-6-8 " '现在时间
c=DateDiff( "yyyy ",b,a) '取得入职时间和现在时间的年差值
response.write c& " <br> "
d=dateadd( "yyyy ",c,b) '得到入职时间加上年差值的新时间
response.write d& " <br> "
e=datediff( "yyyy ",d,a) '得出最终年差值
response.write e
%>
------解决方案--------------------
写错了,这两天真是浑了头了。
--------------------
这个问题正确的思路应该是:先计算出现在时间和入职时间的年差值,然后
让入职时间加上这个年差值,最后比较这个新的时间和现在时间的大小,如
果新的时间大,那么最终结果为前面算出来的年差值减去1,如果新的时间
小,那么最终结果为前面算出来的年差值。测试程序回头写出。

------解决方案--------------------
declare @t table(sid int,start datetime,ending datetime)
insert into @t select 1, '2005-01-02 ', '2006-01-01 '
insert into @t select 2, '2006-01-02 ', '2006-11-01 '
insert into @t select 3, '2005-01-02 ', '2006-03-01 '
insert into @t select 4, '2006-01-02 ', '2007-01-08 '
insert into @t select 5, '2006-02-28 ', '2007-02-28 '
insert into @t select 6, '2005-10-02 ', '2006-05-01 '
insert into @t select 7, '2000-02-28 ', '2001-02-28 '
insert into @t select 8, '2003-02-28 ', '2004-02-29 '
insert into @t select 9, '2005-01-02 ', '2006-02-01 '
--查询语句
select 年差=case when dateadd(yy,datediff(yy,start,ending),start)> ending then (datediff(yy,start,ending)-1) else datediff(yy,start,ending) end
from @t
--结果
年差
-------
0
0
1
1
1
0
1
1
1