将字符串转换为特定格式的日期时间

时间:2014-02-10 13:03:13

标签: c# sql .net database sql-server-2008-r2

我的日期字符串为:

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')

错误:

  

字符串未被识别为有效日期时间

4 个答案:

答案 0 :(得分:2)

我建议你使用DateTime方法。请查看以下链接,了解有关如何使用DateTime进行转换的信息。

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

在将数据发送到数据库之前转换数据时,也更容易维护。除非你特别想用SQL转换它。那么我建议你看看下面的链接:

How to: Convert a String to DateTime in SQL Server

答案 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