When you are importing the data from CSV file or other data source, you might require to convert the nvarchar(14) into date/time value. We assume that the column value is in a predefined format of 'yyyyMMddhhmmss' (14 characters).
Below function will be very handy in converting those values into date/time type:
create function fn_from_sys_date ( @dt_str as nvarchar(14) ) returns datetime begin /* 9-may-12,lhw -parse the date+time string and returns datetime type. select dbo.fn_from_sys_date('20120509174210'), dbo.fn_from_sys_date('20120509'), dbo.fn_from_sys_date('') */ declare @result datetime, @dd nchar(2), @mm nchar(2), @yyyy nchar(4), @hh nchar(2), @minute nchar(2), @ss nchar(2) -- the value format is yyyymmddhhMMss if len(@dt_str) >= 8 begin select @yyyy = left(@dt_str, 4), @mm = substring(@dt_str, 5, 2), @dd = substring(@dt_str, 7, 2) end else begin -- min date. select @yyyy = '1753', @mm = '01', @dd = '01' end if len(@dt_str) = 14 begin select @hh = substring(@dt_str, 9, 2), @minute = substring(@dt_str, 11, 2), @ss = substring(@dt_str, 13, 2) end else begin select @hh = '00', @minute = '00', @ss = '00' end select @result = cast(@yyyy + '-' + @mm + '-' + @dd + ' ' + @hh + ':' + @minute + ':' + @ss as datetime) return @result end
No comments:
Post a Comment