SQL 把时间差转换为小时、分钟秒

山间竹笋 2018-02-28 04:05:15
SQL 怎么 把时间差转换为小时、分钟、秒?
tStartTime tEndTime
2018-02-28 14:40:35.607 2018-03:15 14:41:36.607

结果能得到 360:01:01

我写了
CONVERT(varchar, DATEADD(S, DATEDIFF(S,tStartTime , tEndTime), 0), 120) ,可是不好用
...全文
5114 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2018-02-28
  • 打赏
  • 举报
回复
引用 5 楼 FRANK1981 的回复:
大神,太厉害了!
没事就结贴吧
山间竹笋 2018-02-28
  • 打赏
  • 举报
回复
跪拜,我爱你!
山间竹笋 2018-02-28
  • 打赏
  • 举报
回复
大神,太厉害了!
吉普赛的歌 2018-02-28
  • 打赏
  • 举报
回复
DECLARE @t TABLE (tStartTime  DATETIME,tEndTime DATETIME)
INSERT INTO @t VALUES ('2018-02-28 14:40:35.607','2018-03-15 14:41:36.607')
;WITH cte AS (
SELECT DATEDIFF(hour,tStartTime,tEndTime) AS h
,DATEDIFF(n,tStartTime,tEndTime)-DATEDIFF(hour,tStartTime,tEndTime)*60 AS m
, DATEDIFF(second,tStartTime,tEndTime)-DATEDIFF(n,tStartTime,tEndTime)*60 AS s 
FROM @t
)
SELECT LTRIM(h)+':'
+CASE WHEN m>9 THEN LTRIM(m) ELSE '0'+LTRIM(m) END+':'
+CASE WHEN s>9 THEN LTRIM(s) ELSE '0'+LTRIM(s) END AS r
FROM cte
/*
360:01:01
*/
 
山间竹笋 2018-02-28
  • 打赏
  • 举报
回复
DATEDIFF(hour,tStartTime,tEndTime) + ':' +DATEDIFF(n,tStartTime,tEndTime)-DATEDIFF(hour,tStartTime,tEndTime)*60 + ':' + DATEDIFF(second,tStartTime,tEndTime)-DATEDIFF(n,tStartTime,tEndTime)*60 这样只有360:1:1
山间竹笋 2018-02-28
  • 打赏
  • 举报
回复
谢谢,可这样得出来的结果是360 1 1 我想得到360:01:01,分钟和秒不足2位补零
吉普赛的歌 2018-02-28
  • 打赏
  • 举报
回复
DECLARE @t TABLE (tStartTime  DATETIME2,tEndTime DATETIME2)
INSERT INTO @t VALUES ('2018-02-28 14:40:35.607','2018-03-15 14:41:36.607')
SELECT DATEDIFF(hour,tStartTime,tEndTime) AS h
,DATEDIFF(n,tStartTime,tEndTime)-DATEDIFF(hour,tStartTime,tEndTime)*60 AS m
, DATEDIFF(second,tStartTime,tEndTime)-DATEDIFF(n,tStartTime,tEndTime)*60 AS s 
FROM @t
/*
h	m	s
360	1	1
*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧