我的日期字符串为:
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')
错误:
字符串未被识别为有效日期时间
答案 0 :(得分:2)
我建议你使用DateTime方法。请查看以下链接,了解有关如何使用DateTime进行转换的信息。
How to: Convert a String to a DateTime in C#
在将数据发送到数据库之前转换数据时,也更容易维护。除非你特别想用SQL转换它。那么我建议你看看下面的链接:
答案 1 :(得分:2)
由于非标准格式,您可能需要在将字符串插入数据库之前使用ParseExact解析该字符串:
string dateString = "Fri Oct 25 22:52:21 2013";
DateTime dateTime = DateTime.ParseExact(dateString, "ddd MMM d HH:mm:ss yyyy", CultureInfo.InvariantCulture);
答案 2 :(得分: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,'','','','','')
疯狂的做法,但你说你想要严格的sql。
答案 3 :(得分:0)
尝试检查数据库中日期的类型,否则这个短日期使用的格式很长...并且以这种格式通过DateTime转换字符串 convert date