Sql server 将Int转换为具有小时和分钟的Int值的时间

Sql server 将Int转换为具有小时和分钟的Int值的时间,sql-server,Sql Server,我的Sql查询 My values(int) Expected 1107 11:07 1407 14:07 1202 00:02 我得到的 12:11:02 我所期待的 11:02 有没有更简单的办法? 谢谢你看 编辑:哦,你现在使用的是MSSql-如果MySQL用户将来也会使用,就把这个留在这里:) 这个想法也应该适用于MsSQL 您应该更改int columns内容,使其包含一天中的第二天,

我的Sql查询

My values(int)     Expected
1107                11:07
1407                14:07
1202                00:02
我得到的

12:11:02

我所期待的

11:02

有没有更简单的办法?
谢谢你看

编辑:哦,你现在使用的是MSSql-如果MySQL用户将来也会使用,就把这个留在这里:)

这个想法也应该适用于MsSQL


您应该更改int columns内容,使其包含一天中的第二天,即

MySQL: 那你就可以用

0      for 00:00:00
21.600 for 06:00:00
86.399 for 23:59:59
TIME_FORMAT(SEC_TO_TIME(seconds),'%H:%i')
做任何要求的数学题都要容易些

MsSQL: 那你就可以用

0      for 00:00:00
21.600 for 06:00:00
86.399 for 23:59:59
TIME_FORMAT(SEC_TO_TIME(seconds),'%H:%i')
做任何要求的数学题都要容易些


由于您的int列无法更改-我坚持使用一天中的秒数-您可以通过将前两位数字乘以3600,最后两位数字乘以60来转换表示:

 FORMAT(DATEADD(ss,seconds,0), 'HH:mm')

编辑:简单化的东西也可以,因为实际上不需要转换(这不会返回
datetime
类型,而是
string
类型):

但请注意,使用此方法时缺少前导0


非常抱歉,我已将我的标记编辑到Microsoft SQL Server。我确实理解您试图执行的操作,但如何在上述查询中使用它。我的int列无法更改。上面的值只是我的表的一个表示形式。恐怕它不会适用于所有情况。例如:902,您基本上要求我硬编码前2和后2,并在表中加一个分号middle@user3920526哦我本以为已经
0902
我已经更新了我的答案以考虑到这一点。@user3920526 ps:您应该尝试更改该列的格式,即使它是有效的。如何存储
00:07
?只是
7
?这对任何方法都不起作用。
Declare @t int
SET @t=903
SELECT LEFT(@t,LEN(@t)-2) + ':' + RIGHT(@t,2)