2012-09-24 36 views
9

ここでIは、(データ型がintegerある)timeカラムを持つテーブルを持っている今は、SQL Server 2008整数(時間)をHH:MM:SS :: 00に変換する方法はSQL Server 2008でですか?

時間フォーマットHH:MM:SS:00に整数値に変換する必要も00表すかどうかを、上記time形式で明確化を必要としますミリ秒?

助けてください。

例: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

'time'データ型に従った追加情報が好きかもしれません: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) 
関連する問題