2012-09-24 78 views
9

在這裏我有一個time列(數據類型爲integer),現在我需要的整數值轉換爲時間格式HH:MM:SS:00在SQL Server 2008中如何在SQL Server 2008中將整數(時間)轉換爲HH:MM:SS :: 00?

還需要澄清上述time格式,00代表的是表毫秒?

請幫忙。

示例:23421155表示23:42:11:55; 421151代表00:42:11:51

希望現在很清楚。

+4

什麼是數字格式? –

+0

我不知道他們使用的時間格式,但這裏是一個示例10455836. – Praveen

+8

您需要知道這個數字的含義是什麼,之後任何人都可以告訴您如何將其轉換爲一次。 –

回答

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

結果:

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

(1 row(s) affected) 


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

(1 row(s) affected) 
+0

根據''時間'數據類型的其他信息可以在這裏:http://technet.microsoft.com/en-us/library/bb677243.aspx – Sandr

+0

它是4年半後,但這應該被接受爲答案。這正是我需要的 –

1

您可以使用下面的時間轉換SQL內是這樣的:

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

結果: - 時間(分鐘)和 1900-01- 01 14:47:00.000 < - 分鐘到時間

6

將整數轉換爲字符串,然後可以使用STUFF函數將冒號插入時間字符串。一旦你完成了,你可以將字符串轉換爲時間數據類型。

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

這應該是最簡單的方式將它轉換爲一個時間而不做任何瘋狂的事情。

在你的例子中,你也有一個int,前導零不在那裏。在這種情況下,你可以簡單地做這樣的事情:

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