2012-09-24 15 views
9

Ben time kolonuna (veri türü integer olan), şimdi 00 temsil edip, 2008.SQL Server 2008'de bir tam sayı (zaman) HH: MM: SS :: 00 nasıl dönüştürülür? İşte

Ayrıca yukarıdaki time biçiminde açıklama gerekiyorsa, SQL Server zaman biçiminde HH:MM:SS:00 tamsayı değeri gerekir içeren bir tablo var milisaniye?

Lütfen bu konuda yardımcı olun.

örnek: 23421155 23: 42: 11: 55; 421151 00: 42: 11: 51

Şimdi açık olduğunu umuyorum.

+4

Nümerik biçim nedir? –

+0

Kullandıkları zaman biçimini bilmiyorum ama burada bir örnek var 10455836. – Praveen

+8

Bu sayının, herhangi bir kişinin bir süreye nasıl dönüştürüleceğini anlayabilmesi için ne anlama geldiğini bilmeniz gerekiyor. –

cevap

14
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)))))) 

Sonuç:

hour  minute  second  millisecond 
----------- ----------- ----------- ----------- 
10   45   58   360 

(1 row(s) affected) 


---------------- 
10:45:58.36 

(1 row(s) affected) 
+0

'time' veri türüne göre ek bilgi buraya düşkün olabilir: http://technet.microsoft.com/en-us/library/bb677243.aspx – Sandr

+0

Bu 4 yıl bir buçuk sonra, ama bu cevap olarak kabul edilmelidir . Tam olarak ihtiyacım olan şey bu –

1

Böyle SQL içinde aşağıdaki zamanlı dönüşüm kullanabilirsiniz:

--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, '') 

Sonuç: - dakika içinde Zaman ve 1900-01- 01 14: 47: 00.000 < - Dakikalar Zaman

6

Tam sayıyı bir dizeye dönüştürün ve sonra sütunlarınızı zaman dizisine eklemek için STUFF işlevini kullanabilirsiniz. Bunu yaptıktan sonra dizeyi bir zaman veri türüne dönüştürebilirsiniz.

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

Bu, deliğe hiçbir şey yapmadan bir süreye dönüştürmenin en basit yolu olmalıdır.

Örneğinizde, baştaki sıfırların olmadığı bir int de vardı. Bu durumda, aşağıdaki gibi basit bir şey yapabilirsiniz:

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