sqlserver如何计算两个日期之差,精确到毫秒计算
declare @starttime datetime,@endtime datetime
set @starttime='2012-10-07 10:57:23.957'
set @endtime ='2012-11-08 08:31:03.224'
如题,我要得到相差31天 几小时 几分 几秒 几毫秒
select datediff(part,@starttime,@endtime)
part使用day计算出来是32天,不对;
part使用ss,ss最大是60几天,超出的话不对;
part使用ms,ms最大是24小时多少多少,超出不对。
大神们,你们是怎么做的啊?
------解决方案--------------------逻辑错了
DECLARE @starttime DATETIME ,
@endtime DATETIME
SET @starttime = '2012-10-07 10:57:23.957'
SET @endtime = '2012-11-08 08:31:03.224'
SELECT CASE WHEN DATEDIFF(hour, @starttime, @endtime) < 24
THEN CONVERT(VARCHAR(10), DATEDIFF(DAY, @starttime, @endtime) )
ELSE CONVERT(VARCHAR(10), DATEDIFF(DAY, @starttime, @endtime)- 1)
END + '天' + CONVERT(VARCHAR(10), DATEDIFF(hour, @starttime, @endtime)
% 24) + '时' + CONVERT(VARCHAR(10), DATEDIFF(mm, @starttime, @endtime)
% 60) + '分' + CONVERT(VARCHAR(10), DATEDIFF(ss, @starttime, @endtime)
% 60) + '秒'
------解决方案--------------------应该可以这样做的
------解决方案-------------------- declare @starttime datetime,@endtime datetime
set @starttime='2012-10-07 10:57:23.957'
set @endtime ='2012-11-08 08:31:03.224'
用datediff(d,@starttime,@endtime)
hh为小时 mi为分 s为秒 ms为毫秒
------解决方案----------------------计算时间
declare @starttime datetime,@endtime datetime
set @starttime ='2012-10-07 10:57:23.957'
set @endtime ='2012-11-08 08:31:03.224'
--需减1 因为当天不能被计算所以减去当天
select convert(varchar(50),datediff(DAY,@starttime,@endtime)-1)+'天'+
convert(varchar(50),datediff(HH,@starttime,@endtime)%24)+ '小时'+
convert(varchar(50),datediff(MI,@starttime,@endtime)%60)+'分钟'+
convert(varchar(50),datediff(S,@starttime,@endtime)%60)+'秒'+
convert(varchar(50),datediff(S,@starttime,@endtime)%60%1000)+'毫秒'
--1秒等于一千毫秒 则毫秒用秒来计算