2014-02-10 120 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它给了我错误:字符串未被识别为有效的日期时间 –

回答

2

由于非标准格式,则可能需要将其插入到数据库之前,解析与ParseExact的stirng:

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

先生,当我有'星期五10月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

尝试检查你的约会的类型数据的基础,否则的格式使用这么短的时间,长......而这种格式您通过日期时间 的字符串转换convert date

相关问题