关于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秒
具体怎么实现??
展开
 我来答
小游1988
推荐于2018-03-28 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:88
采纳率:0%
帮助的人:101万
展开全部
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'天
小时
分钟
秒'

效果图如下:

zhangqingxian
2013-08-24 · TA获得超过268个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:306万
展开全部
用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秒
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
厍曼冬6o
2013-08-24 · TA获得超过1569个赞
知道小有建树答主
回答量:1336
采纳率:0%
帮助的人:1201万
展开全部
直接相减是秒数,然后/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))||'小时'||..........
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cooldanny
2013-08-24 · 超过19用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:53.7万
展开全部
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 ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式