代码之家  ›  专栏  ›  技术社区  ›  oshirowanen

DB日期插入有时有效

  •  0
  • oshirowanen  · 技术社区  · 11 年前

    我有以下几行:

    command.Parameters.Add("@date", SqlDbType.DateTime, 8).Value = date_of_trip;
    

    哪里 date_of_trip 是包含以下内容的字符串 25-9-2013 (即年月日)

    这会给我一条错误消息:

    System.ArgumentException:无法将2013年9月25日转换为System.DateTime。 参数名称:类型--->System.FormatException:字符串不是 被识别为有效的DateTime。

    但是,如果 行程日期 1-1-2013 ,它似乎工作得很好!

    2 回复  |  直到 11 年前
        1
  •  1
  •   Tim Schmelter    11 年前

    您应该将字符串解析为 datetime 在将其发送到数据库之前。

    例如:

    DateTime dt;
    if(DateTime.TryParse(date_of_trip, out dt))
    {
        command.Parameters.Add("@date", SqlDbType.DateTime, 8).Value = dt;
        // ...
    }
    else
    {
        // you should use a CompareValidator to check if it's a valid date
    }
    

    如果您想确保给定的格式能够工作,即使服务器的当前区域性将发生更改,您也可以使用 DateTime.TryParseExact 带格式 "dd-MM-yyyy" :

    if (DateTime.TryParseExact(date_of_trip, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt))
    {
        // ...
    }
    
        2
  •  0
  •   Toverbal    11 年前

    我想这是因为服务器期望第一个参数是一个月。尝试使用真实的DateTime或yyyy-mm-dd格式(即2013-09-25),这应该始终有效。