2014-02-10 3 views
0

У меня есть строку даты, как:преобразования строки в дату в определенном формате

Fri Oct 25 22:52:21 2013 

Я хочу, чтобы преобразовать его в формат даты и времени при отправке его в базу данных.

Я попробовал запрос как:

insert into 
DeccoRaw values 
('A04','005629','ARROW STEPLADDER 3TREAD 13013', 
19.89,1,35.8,'NETT',19.89,'5010845130133', 
cast('Fri Oct 25 22:52:21 2013' as DateTime), 
20,'LADDERS','D19206','A','N','13013',29,'','','','','') 

Я использую C# .NET

Его дает мне сообщение об ошибке:

Msg 241, Level 16, State 1, Line 1 
Conversion failed when converting date and/or time from character string. 

Когда я преобразовать его в C#, как: DateTime.Parse('Fri Oct 25 22:52:21 2013')

Ошибка:

string was not recognized as valid datetime

+2

Почему бы не превратить его с помощью DateTime, вместо того, чтобы делать это в запросе? – Max

+0

@MaxMommersteeg это дает мне ошибку: строка не была признана действительной datetime –

ответ

2

Я предлагаю вам использовать метод DateTime. Посмотрите ссылку ниже, чтобы узнать, как конвертировать с помощью DateTime.

How to: Convert a String to a DateTime in C#

Кроме того, легче поддерживать при преобразовании данных, прежде чем отправить его в базу данных. Если вы специально не хотите конвертировать его с SQL. Тогда я предлагаю вам взглянуть на ссылку ниже:

How to: Convert a String to DateTime in SQL Server

2

Из-за нестандартного формата, возможно, придется разобрать stirng с ParseExact перед вставкой в ​​БД:

string dateString = "Fri Oct 25 22:52:21 2013"; 
DateTime dateTime = DateTime.ParseExact(dateString, "ddd MMM d HH:mm:ss yyyy", CultureInfo.InvariantCulture); 
+0

Это было полезно для меня ... спасибо –

+0

sir, when i have 'Fri Oct 5 22:52:21 2013' как строка, дающая мне ошибку –

+0

одинарная цифра даёт ошибку –

2

Подстрока для удаления первых символов, так как вы не называете день недели. Я не уверен, что это всегда 3 символа, поэтому вы можете захотеть добавить какой-то тест, чтобы найти первый экземпляр пространства.

declare @crap as nvarchar(2000) 
set @crap = 'Fri Oct 25 22:52:21 2013' 
select CONVERT(datetime , substring(@crap,4,len(@crap))) 

Вы могли бы использовать, что непосредственно в вставной что-то вроде этого, может быть,

insert into DeccoRaw values 
('A04','005629','ARROW STEPLADDER 3TREAD 13013', 
    19.89,1,35.8,'NETT',19.89,'5010845130133', 
    CONVERT(datetime , substring('Fri Oct 25 22:52:21 2013' ,4,len('Fri Oct 25 22:52:21 2013')))  
    20,'LADDERS','D19206','A','N','13013',29,'','','','','') 

Сумасшедший способ сделать это, но вы сказали, что вы хотели strickly SQL.

0

попытаться проверить тип вашей даты в вашей базе данных, в противном случае формат, используемый в такой короткий день долго ... и в этом формате вы преобразовать строку через DateTime convert date

Смежные вопросы