2012-11-05 6 views
0

J'ai une colonne en sq qui est un INT et je dois le convertir en temps.Conversion INT en temps

J'ai essayé

  CONVERT (VARCHAR, columnA/600000) 
    + ':' 
    + RIGHT ('00' + CONVERT (VARCHAR, c_columnA % 60), 2) 

mais ce n'est pas le résultat. Une idée est comment les données pourraient être castées?

Voici un échantillon des données:

 
INT |TIME 
4680001|13:00 
4680001|13:00 
4596001|12:45 
3846001|10:41 
4320001|12:00 
+1

Qu'est-ce que ce nombre '2910519' représentent? * Pourquoi * devrait-il être '10: 41'? –

+0

*** Pourquoi *** ces chiffres devraient-ils donner ces résultats? '2910519/600000' =' 4.850865', donc je ne suis pas sûr d'où '10: 41' est censé provenir. – MatBailie

+0

@HansKesting il devrait être 10:41 parce qu'une face avant l'affiche comme ça, nous ne savons pas comment l'extrémité avant le convertit –

Répondre

4

Il est déjà dans les commentaires mais je posterai cela comme une réponse:

Si vous ignorez la queue 1, la valeur pourrait être centièmes de une seconde depuis minuit -

select dateadd(ms,384600 * 100,'19000101') donne 19000101 10:41

ou une requête:

DECLARE @t TABLE 
(i INT, t VARCHAR(5)) 
INSERT @t (i,t) 
VALUES (4680001,'13:00'), 
(4680001,'13:00'), 
(4596001,'12:45'), 
(3846001,'10:41'), 
(4320001,'12:00') 

SELECT DATEADD(s,i/100,'19000101'), t 
FROM @t 
+0

@LittleBobbyTables parfois il y a un arrière 4 –