在這裏我有一個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
希望現在很清楚。
在這裏我有一個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
希望現在很清楚。
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)
根據''時間'數據類型的其他信息可以在這裏:http://technet.microsoft.com/en-us/library/bb677243.aspx – Sandr
它是4年半後,但這應該被接受爲答案。這正是我需要的 –
您可以使用下面的時間轉換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 < - 分鐘到時間
將整數轉換爲字符串,然後可以使用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)
什麼是數字格式? –
我不知道他們使用的時間格式,但這裏是一個示例10455836. – Praveen
您需要知道這個數字的含義是什麼,之後任何人都可以告訴您如何將其轉換爲一次。 –