web-dev-qa-db-ja.com

SQL Server 2008で整数(時間)をHH:MM:SS :: 00に変換する方法は?

ここにtime列(データ型はinteger)のあるテーブルがあります。SQLServer 2008では整数値を時刻形式HH:MM:SS:00に変換する必要があります。

00がミリ秒を表すかどうかにかかわらず、上記のtime形式の説明も必要ですか?

これで助けてください。

例:23421155は23:42:11:55を表します。 421151は00:42:11:51を表します

今ははっきりしていることを願っています。

15
Praveen
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)
17
Mikael Eriksson

整数を文字列に変換すると、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)
9
all about data

組み込みのMSDB.DBO.AGENT_DATETIME(20150119,0)を使用します

https://blog.sqlauthority.com/2015/03/13/sql-server-interesting-function-agent_datetime/

1
Bruce Morris II

次のように、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 <-時間(分)

1
A Ghazal