Como converter um inteiro (tempo) para HH: MM: SS :: 00 no SQL Server 2008?

Aqui eu tenho uma tabela com uma coluna de time (tipo de dados é integer ), agora eu preciso converter o valor inteiro para o formato de hora HH:MM:SS:00 no SQL Server 2008.

Também precisa de esclarecimento no formato de time acima, se 00 representa milissegundos?

Por favor me ajude nisso.

exemplo: 23421155 representa 23: 42: 11: 55; 421151 representa 00: 42: 11: 51

Espero que esteja claro agora.

 declare @T int set @T = 10455836 --set @T = 421151 select (@T / 1000000) % 100 as hour, (@T / 10000) % 100 as minute, (@T / 100) % 100 as second, (@T % 100) * 10 as millisecond select dateadd(hour, (@T / 1000000) % 100, dateadd(minute, (@T / 10000) % 100, dateadd(second, (@T / 100) % 100, dateadd(millisecond, (@T % 100) * 10, cast('00:00:00' as time(2)))))) 

Resultado:

 hour minute second millisecond ----------- ----------- ----------- ----------- 10 45 58 360 (1 row(s) affected) ---------------- 10:45:58.36 (1 row(s) affected) 

Converta o inteiro em uma string e, em seguida, você pode usar a function STUFF para inserir em seus dois pontos na string de tempo. Depois disso, você poderá converter a string em um tipo de dados de hora.

 SELECT CAST(STUFF(STUFF(STUFF(cast(23421155 as varchar),3,0,':'),6,0,':'),9,0,'.') AS TIME) 

Essa deve ser a maneira mais simples de convertê-lo para um tempo sem fazer nada para ficar louco.

No seu exemplo, você também teve um int onde os zeros à esquerda não estão lá. Nesse caso, você pode fazer algo simples assim:

 SELECT CAST(STUFF(STUFF(STUFF(RIGHT('00000000' + CAST(421151 AS VARCHAR),8),3,0,':'),6,0,':'),9,0,'.') AS TIME) 

Você pode usar a seguinte conversão de tempo no SQL da seguinte forma:

 --Convert Time to Integer (Minutes) DECLARE @timeNow datetime = '14:47' SELECT DATEDIFF(mi,CONVERT(datetime,'00:00',108), CONVERT(datetime, RIGHT(CONVERT(varchar, @timeNow, 100),7),108)) --Convert Minutes to Time DECLARE @intTime int = (SELECT DATEDIFF(mi,CONVERT(datetime,'00:00',108), CONVERT(datetime, RIGHT(CONVERT(varchar, @timeNow, 100),7),108))) SELECT DATEADD(minute, @intTime, '') 

Resultado: 887 <- Tempo em minutos e 1900-01-01 14: 47: 00.000 <- Minutos no tempo