Convert varchar data to datetime in SQL server when source data is w/o format -
how can convert varchar data '20130120161643730' datetime ?
convert(datetime, '20130120161643730') not work.
however, convert (datetime, '20130120 16:16:43:730') works. guess needs data in correct format.
is there valid way can used convert datetime directly unformatted data ?
my solution :
declare @var varchar(100) = '20130120161643730' select concat(left(@var,8),' ',substring(@var,9,2),':',substring(@var,11,2),':',substring(@var,13,2),':',right(@var,3)) it works fine. however, i'm looking compact solution.
you can make little more compact not forcing dashes, , using stuff instead of substring:
declare @var varchar(100) = '20130120161643730'; set @var = left(@var, 8) + ' ' + stuff(stuff(stuff(right(@var, 9),3,0,':'),6,0,':'),9,0,'.'); select [string] = @var, [datetime] = convert(datetime, @var); results:
string datetime --------------------- ----------------------- 20130120 16:16:43.730 2013-01-20 16:16:43.730
Comments
Post a Comment