2017-01-25 2 views
2

J'ai un champ VARCHAR qui a des valeurs d'échantillon comme indiqué ci-dessous et je voudrais le convertir en HH: MM: SS. Suggestions?TSQL Convertir VARCHAR en TIME

151200 
085800 
080100 
210100 
083300 
+1

ce que dbms? sql-server, postgres, mysql, ... – McNets

Répondre

2

sur sql-server essayez ceci:

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 

Retours

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:

Selon la version d'un étant donné que vous stockez des valeurs de temps dans un varchar (ce qui signifie que vous pourriez avoir de fausses données), vous pouvez utiliser:

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

Si vous utilisez SQL Server 2012 ou au-dessus et souhaitez stocker les valeurs en tant que types de données TIME, vous pouvez utiliser la fonction TIMEFROMPARTS.

Par exemple:

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

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

Cela renverra TIME. Pour plus d'informations, s'il vous plaît voir ceci: https://msdn.microsoft.com/en-us/library/hh213398.aspx