sql给秒转成时分秒

nitaiyoucala 2017-06-08 04:27:58
SELECT CONVERT(VARCHAR(8),DATEADD(ss,86400,'1900-01-01 00:00:00'),108)

怎么是00:00:00 啊 不应该是24:00:00吗? 请问怎么转?
...全文
710 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2017-06-08
  • 打赏
  • 举报
回复
引用 2 楼 nitaiyoucala 的回复:
[quote=引用 1 楼 sinat_28984567 的回复:]
进位了,就像在10进位里,个位上没出现过10这个值的数字一样,减一秒看看就知道了
SELECT CONVERT(VARCHAR(8),DATEADD(ss,86399,'1900-01-01 00:00:00'),108)


还是这样靠谱
declare @i int
set @i=86400
select cast(@i/3600 as varchar)+':'+case when len(@i%3600/60)=1 then '0'+cast(@i%3600/60 as varchar) else cast(@i%60/60 as varchar) END +':'+case when len(@i%60)=1 then '0'+cast(@i%60 as varchar) else cast(@i%60 as varchar) end[/quote]
恩这样已经不在是时间转换的了,而是拼接的字符串了,所以24、25的就随心所欲了,比如多写10万秒
DECLARE @i INT
SET @i = 186400
SELECT CAST(@i / 3600 AS VARCHAR) + ':'
+ CASE WHEN LEN(@i % 3600 / 60) = 1
THEN '0' + CAST(@i % 3600 / 60 AS VARCHAR)
ELSE CAST(@i % 60 / 60 AS VARCHAR)
END + ':' + CASE WHEN LEN(@i % 60) = 1
THEN '0' + CAST(@i % 60 AS VARCHAR)
ELSE CAST(@i % 60 AS VARCHAR)
END


nitaiyoucala 2017-06-08
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
进位了,就像在10进位里,个位上没出现过10这个值的数字一样,减一秒看看就知道了
SELECT CONVERT(VARCHAR(8),DATEADD(ss,86399,'1900-01-01 00:00:00'),108)
还是这样靠谱 declare @i int set @i=86400 select cast(@i/3600 as varchar)+':'+case when len(@i%3600/60)=1 then '0'+cast(@i%3600/60 as varchar) else cast(@i%60/60 as varchar) END +':'+case when len(@i%60)=1 then '0'+cast(@i%60 as varchar) else cast(@i%60 as varchar) end
二月十六 版主 2017-06-08
  • 打赏
  • 举报
回复
进位了,就像在10进位里,个位上没出现过10这个值的数字一样,减一秒看看就知道了
SELECT CONVERT(VARCHAR(8),DATEADD(ss,86399,'1900-01-01 00:00:00'),108)

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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