2016-09-15 7 views
0

Я получил плоский файл и после разбора и вставки его в таблицу. У меня есть столбец, который имеет даты в формате ГГГГММДДччммссаПреобразование строки в Datetime

Здесь, гггга в год, MM на месяц, дд на день, чч является часом, мм в минуте и сс секундах часть

Я пытаюсь преобразовать это типа DateTime, как указано ниже, но не работает для меня

SELECT CAST(StrDate as DateTime) FROM [dbo].[Mytable] 

Например: Колонка имеет значение 20150121190941 в формате Varchar, и он должен быть преобразован в DateTime в 2015-01-21 19: 09: 41.000

Я прошу прощения, если это дубликат один.

+0

Для этого укажите пример и ожидаемые выходные данные. – Susang

+0

Как вы его разобрали? Не можете ли вы преобразовать его там и вставить его как 'DateTime'? F.E. с C#: 'DateTime dt = DateTime.ParseExact (" 20150121190941 "," yyyyMMddHHmmss ", CultureInfo.InvariantCulture);' –

+0

Это мой вопрос. Я хочу, чтобы эта строка вставлялась в столбец типа 'DateTime'. Это возможно только после преобразования из 'NVARCHAR (20)' в 'DateTime'. –

ответ

0

Вы можете использовать выберите DATETIMEFROMPARTS (год, месяц, день, час, минута, секунды, миллисекунды)

declare @dt nvarchar(25) = '20150121190941' 

select datetimefromparts(left(@dt,4), substring(@dt,5,2), substring(@dt,7,2),substring(@dt,9,2), substring(@dt,11,2), substring(@dt,13,2), '000') 
+0

Спасибо, но мне нужна также часть времени –

+0

Да использовать datetimefromparts .., который будет давать со временем –

0

SQL Server легко распознаваемые ГГГГММДД в ​​качестве даты. Таким образом, преобразование первых 8 символов в дату легко. Увы, я не думаю, что есть временное представление без двоеточий.

Итак, вот один довольно жестокий метод:

select (convert(datetime, left(StrDate, 8)) + 
     convert(time, substring(StrDate, 9, 2) + ':' + substring(StrDate, 11, 2) + ':' + substring(StrDate, 13, 2) 
       ) 
     ) 
0

Declare @dt VARCHAR (50) набор @ дт = 20150121190941

создать таблицу tblDateTbl ( col1 DateTime ) вставки в dt (col1) выберите SUBSTRING (@ dt, 1,4) + '-' + SUBSTRING (@ dt, 5,2) + '-' + SUBSTRING (@ dt, 7,2) + '' + SUBSTRING (@ dt, 9,2) + ':' + SUBSTRING (@ dt, 11,2) + ':' + SUBSTRING (@ dt, 13,2) + '.000'

+0

Я просто предоставил образцы данных, вам нужно заменить @dt на ваше имя столбца и использовать инструкцию update. – Poonam