日期:2014-05-19  浏览次数:20502 次

关于SQL server 中计算时间的长短
要计算2个时间的差值。
时间的格式是2006-12-01   12:00
我直接用语句select   date1-date2....得出来的结果却是1900-1-0   0:12,后面的分钟小时是对的,但是前面的年份怎么就是1900呢?而且在2006年1月的相减得出的结果是1900-1-1   0:12,无故多出了1天.不知道这个语句要怎么写?

------解决方案--------------------
datediff函数
------解决方案--------------------
--创建一个求日期差值的函数
create function f_e_get_datediff (@begin_date datetime,@end_date datetime)
returns varchar(50)
as
begin
declare @datediff varchar(20),@date datetime
if @begin_date > @end_date
begin
select @datediff = '- ',@date = @begin_date,@begin_date = @end_date,@end_date = @date
end
else
set @datediff = ' '

select @datediff = @datediff + convert(varchar(8000),datediff(day,@begin_date,@end_date) +
case
when convert(varchar(10),@begin_date,108) > convert(varchar(10),@end_date,108)
then -1
else 0
end ) + '/ ' +
right(convert(varchar(50),@end_date - @begin_date,120),8)

return @datediff
end

go

--测试
declare @begin_date datetime,@end_date datetime
select @begin_date = '20070203 8:00 ',@end_date = '20070201 9:00 '

select dbo.f_e_get_datediff(@begin_date,@end_date)

/*--结果
----------------------
-1/23:00:00

(所影响的行数为 1 行)

*/



------解决方案--------------------
datediff函数