首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于SQL server 中计算时间的长短解决方案

2012-03-09 
关于SQL server 中计算时间的长短要计算2个时间的差值。时间的格式是2006-12-0112:00我直接用语句selectdat

关于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函数

热点排行