关于SQL两个时间计算出间隔时间的问题。
有两个时间,分别是:2013-08-2016:40:23和2013-08-2416:05:05现在要计算这两个间隔时间是多少,需要的格式是XX天XX小时XX分XX秒具体怎...
有两个时间,分别是:2013-08-20 16:40:23和2013-08-24 16:05:05
现在要计算这两个间隔时间是多少,需要的格式是XX天XX小时XX分XX秒
具体怎么实现?? 展开
现在要计算这两个间隔时间是多少,需要的格式是XX天XX小时XX分XX秒
具体怎么实现?? 展开
4个回答
展开全部
declare @DMtime int
declare @D varchar(10)
declare @H varchar(10)
declare @M varchar(10)
declare @S varchar(10)
set @DMtime=DATEDIFF(SECOND,'2013-08-20 16:40:23','2013-08-24 16:05:05')
--获取两个时间段的秒的相差值
set @D=@DMtime/(3600*24)--天数
set @H=(@DMtime-@D*3600*24)/3600--小时
set @M=(@DMtime-@D*3600*24-@H*3600)/60--分钟
set @S=@DMtime-@D*3600*24-@H*3600-@M*60--秒
select @D+N'天
小时
分钟
秒'
效果图如下:
展开全部
用DATEDIFF(second, @startdate, @enddate)计算出时间差是多少秒,再把秒数转成XX天XX小时XX分XX秒
declare @date1 datetime
declare @date2 datetime
declare @seconds int
select @date1='2013-08-20 16:40:23'
select @date2='2013-08-24 16:05:05'
select @seconds = DATEDIFF(SECOND, @date1, @date2)
select CAST(@seconds/60/60/24 as varchar(10))+'天'
+ CAST(@seconds/60/60%24 as varchar(10)) + '小时'
+ CAST(@seconds/60%60 as varchar(10)) + '分钟'
+ CAST(@seconds%60 as varchar(10)) + '秒'
-------------------------------------------------------------------------
3天23小时24分钟42秒
declare @date1 datetime
declare @date2 datetime
declare @seconds int
select @date1='2013-08-20 16:40:23'
select @date2='2013-08-24 16:05:05'
select @seconds = DATEDIFF(SECOND, @date1, @date2)
select CAST(@seconds/60/60/24 as varchar(10))+'天'
+ CAST(@seconds/60/60%24 as varchar(10)) + '小时'
+ CAST(@seconds/60%60 as varchar(10)) + '分钟'
+ CAST(@seconds%60 as varchar(10)) + '秒'
-------------------------------------------------------------------------
3天23小时24分钟42秒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接相减是秒数,然后/60/60/24取整就是天,然后小数部分乘24再取整就是小时,然后小数部分乘60再取整就是分,然后小数部分乘60就是秒了
假设本题相减后:
to_date('2013-08-24 16:05:05','yyyy-mm-dd hh24:mi:ss')
-to_date('20132013-08-20 16:40:23','yyyy-mm-dd hh24:mi:ss'))
为X秒,则:
select to_char(floor(X/60/60/24))||'天'||to_char(floor((X/60/60/24-floor(X/60/60/24))*24))||'小时'||..........
假设本题相减后:
to_date('2013-08-24 16:05:05','yyyy-mm-dd hh24:mi:ss')
-to_date('20132013-08-20 16:40:23','yyyy-mm-dd hh24:mi:ss'))
为X秒,则:
select to_char(floor(X/60/60/24))||'天'||to_char(floor((X/60/60/24-floor(X/60/60/24))*24))||'小时'||..........
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT EXTRACT(DAY FROM NUMTODSINTERVAL(to_DATE('2013-08-24 16:05:05','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2013-08-20 16:40:23','YYYY-MM-DD HH24:MI:SS'),'DAY')) DAY,
EXTRACT(HOUR FROM NUMTODSINTERVAL(to_DATE('2013-08-24 16:05:05','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2013-08-20 16:40:23','YYYY-MM-DD HH24:MI:SS'),'DAY')) HOUR,
EXTRACT(MINUTE FROM NUMTODSINTERVAL(to_DATE('2013-08-24 16:05:05','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2013-08-20 16:40:23','YYYY-MM-DD HH24:MI:SS'),'DAY')) MINUTE,
EXTRACT(SECOND FROM NUMTODSINTERVAL(to_DATE('2013-08-24 16:05:05','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2013-08-20 16:40:23','YYYY-MM-DD HH24:MI:SS'),'DAY')) SECOND
FROM dual ;
EXTRACT(HOUR FROM NUMTODSINTERVAL(to_DATE('2013-08-24 16:05:05','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2013-08-20 16:40:23','YYYY-MM-DD HH24:MI:SS'),'DAY')) HOUR,
EXTRACT(MINUTE FROM NUMTODSINTERVAL(to_DATE('2013-08-24 16:05:05','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2013-08-20 16:40:23','YYYY-MM-DD HH24:MI:SS'),'DAY')) MINUTE,
EXTRACT(SECOND FROM NUMTODSINTERVAL(to_DATE('2013-08-24 16:05:05','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2013-08-20 16:40:23','YYYY-MM-DD HH24:MI:SS'),'DAY')) SECOND
FROM dual ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询