【问题标题】:convert string to datetime in specific format将字符串转换为特定格式的日期时间
【发布时间】:2014-02-10 13:03:13
【问题描述】:

我的日期字符串为:

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

错误:

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

【问题讨论】:

  • 为什么不使用 DateTime 方法转换它,而不是在查询中这样做?
  • @MaxMommersteeg 它给了我错误:字符串未被识别为有效日期时间

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


【解决方案1】:

删除第一个字符的子字符串,因为您不知道星期几的名称。我不确定它是否总是 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。

【讨论】:

    【解决方案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);
    

    【讨论】:

    • 先生,当我将 'Fri Oct 5 22:52:21 2013' 作为字符串时,它给了我错误
    • @SagarS.Dhanorkar,如果您的日期可以是 1 位或 2 位数字,请使用 d 而不是 dd 格式。用这个更新了答案。如需进一步参考,您可以使用带有格式说明符的MSDN page
    【解决方案3】:

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

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

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

    How to: Convert a String to DateTime in SQL Server

    【讨论】:

      【解决方案4】:

      尝试检查数据库中日期的类型,否则使用这种短日期、长日期的格式……在这种格式中,您可以通过 DateTime 转换字符串 convert date

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-20
        • 2018-08-30
        • 1970-01-01
        • 2014-09-12
        • 1970-01-01
        相关资源
        最近更新 更多