私は以下のようなサンプル値を持つVARCHARフィールドを持っています。これをHH:MM:SSに変換したいと思います。提案?TSQL VARCHARをTIMEに変換します
151200
085800
080100
210100
083300
私は以下のようなサンプル値を持つVARCHARフィールドを持っています。これをHH:MM:SSに変換したいと思います。提案?TSQL VARCHARをTIMEに変換します
151200
085800
080100
210100
083300
SQL-Serverでは、これを試してみてください。
declare @t varchar(10)
set @t='151200'
select left(@t,2) + ':' + substring(@t,3,2) + ':' + right(@t,2)
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,':'))
は、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
どのdbms? sql-server、postgres、mysql、... – McNets