time
ここに列 (データ型は)を持つテーブルがあります。SQL Server 2008 でinteger
整数値を時刻形式に変換する必要があります。HH:MM:SS:00
time
また、00 がミリ秒を表すかどうか 、上記の形式で明確にする必要がありますか?
これについて助けてください。
例: 23421155 は 23:42:11:55 を表します。421151 は 00:42:11:51 を表します
それが今明らかになることを願っています。
time
ここに列 (データ型は)を持つテーブルがあります。SQL Server 2008 でinteger
整数値を時刻形式に変換する必要があります。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)
整数を文字列に変換すると、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)
次のように 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, '')
結果: 887 <- 分単位の時間および 1900-01-01 14:47:00.000 <-- 分単位の時間