2017-01-25 3 views
2

私は以下のようなサンプル値を持つVARCHARフィールドを持っています。これをHH:MM:SSに変換したいと思います。提案?TSQL VARCHARをTIMEに変換します

151200 
085800 
080100 
210100 
083300 
+1

どのdbms? sql-server、postgres、mysql、... – McNets

答えて

2

SQL-Serverでは、これを試してみてください。

declare @t varchar(10) 
set @t='151200' 

select left(@t,2) + ':' + substring(@t,3,2) + ':' + right(@t,2) 
4
Declare @YourTable table (TimeStr varchar(25)) 
Insert Into @YourTable values 
('151200'), 
('085800'), 
('080100'), 
('210100'), 
('083300') 


Select * 
     ,AsTime = cast(stuff(stuff(TimeStr,5,0,':'),3,0,':') as time) 
From @YourTable 

戻り

TimeStr AsTime 
151200 15:12:00.0000000 
085800 08:58:00.0000000 
080100 08:01:00.0000000 
210100 21:01:00.0000000 
083300 08:33:00.0000000 

EDIT:

バージョンによってあなたは(あなたが偽のデータを持っている可能性を意味する)varchar型に時間値を格納している考えると、あなたが使用できます。

try_convert(time,stuff(stuff(TimeStr,5,0,':'),3,0,':')) 
4

は、SQL Server 2012以上使用している場合値を実際のTIMEデータ型として格納する場合は、TIMEFROMPARTS関数を使用できます。例えば

DECLARE @d VARCHAR(10) 
SET @d = '151200' 

SELECT TIMEFROMPARTS(LEFT(@d,2), SUBSTRING(@d,3,2), RIGHT(@d,2), 0) 

これは、TIMEを返します。詳細については、こちらをご覧ください:https://msdn.microsoft.com/en-us/library/hh213398.aspx

関連する問題