Sql server 将Int转换为具有小时和分钟的Int值的时间
我的Sql查询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内容,使其包含一天中的第二天,
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)