当前位置: 代码迷 >> Sql Server >> sql如何把某一列的秒全部换算成小时
  详细解决方案

sql如何把某一列的秒全部换算成小时

热度:18   发布时间:2016-04-25 01:11:46.0
sql怎么把某一列的秒全部换算成小时?
就是我有一列全部是以秒为单位的,怎么把它换算成000:00:00格式?

------解决方案--------------------
SQL code
 CREATE TABLE #t(    [ID] [int] IDENTITY(1,1) NOT NULL,    [Time] datetime NULL       )INSERT INTO #tSELECT 59 UNION ALLSELECT 60 UNION ALLSELECT 61 UNION ALLSELECT 119 UNION ALLSELECT 120 UNION ALLSELECT 121 UNION ALLSELECT 3599 UNION ALLSELECT 3600 UNION ALLSELECT 3601 UNION ALLSELECT 86399  select ID,case when cast([Time] as int) between 0 and 24*60*60-1 then CONVERT(varchar(100), cast(floor(cast([Time] as int)/3600)as varchar(100))+':'+cast(floor((cast([Time] as int)%3600)/60)as varchar(100))+':'+cast((cast([Time] as int)%60) as varchar(100)),108) end N'Time' from #tdrop table #t/*结果ID    Time1    0:0:592    0:1:03    0:1:14    0:1:595    0:2:06    0:2:17    0:59:598    1:0:09    1:0:110    23:59:59--------------------------(10 行受影响)(10 行受影响)*/
------解决方案--------------------
[code=SQL][/code]



SELECT CASE len(CAST(12305321/3600 AS VARCHAR))
WHEN 0 THEN '000'
WHEN 1 THEN '00' + CAST(12305321/3600 AS VARCHAR)
WHEN 2 THEN '0' + CAST(12305321/3600 AS VARCHAR)
ELSE CAST(12305321/3600 AS VARCHAR)
END + ':' +

CASE len(CAST(12305321%60 AS VARCHAR))
WHEN 1 THEN '0' + CAST(12305321%60 AS VARCHAR)
WHEN 2 THEN CAST(12305321%60 AS VARCHAR)
ELSE '00'
END + ':' + 

CASE len(CAST(12305321/60%60 AS VARCHAR))
WHEN 1 THEN '0' + CAST(12305321/60%60 AS VARCHAR)
WHEN 2 THEN CAST(12305321/60%60 AS VARCHAR)
ELSE '00'
END



------解决方案--------------------
SQL code
DECLARE @a BIGINT=1289932SELECT CONVERT(VARCHAR(10),@a/3600)+'时'+CONVERT(VARCHAR(10),@a%3600/60)+'分'+CONVERT(VARCHAR(10),@a%3600/60/60)+'秒'/*------------------------------------358时18分0秒(1 行受影响)*/
------解决方案--------------------
SQL code
CREATE TABLE #t(    [ID] [int] IDENTITY(1,1) NOT NULL,    [Time] int NULL       )INSERT INTO #tSELECT 59 UNION ALLSELECT 60 UNION ALLSELECT 61 UNION ALLSELECT 119 UNION ALLSELECT 120 UNION ALLSELECT 121 UNION ALLSELECT 3599 UNION ALLSELECT 3600 UNION ALLSELECT 3601 UNION ALLSELECT 86399SELECT * FROM #tSELECT id,CONVERT(VARCHAR(8),CONVERT(TIME,DATEADD(ss,TIME,'1900-01-01'))) AS t FROM #t/*id    t1    00:00:592    00:01:003    00:01:014    00:01:595    00:02:006    00:02:017    00:59:598    01:00:009    01:00:0110    23:59:59*/
------解决方案--------------------
其实看到别人回复了那么多我一开始不想恢复了。后来看到你还在发就回复而已,来者的才是你最开始想要的,我这个是根据你10楼的要求来转换而已
  相关解决方案