从MSSQL“日期”字段</asp:textbox>中的<asp:textbox>存储日期

时间:2013-03-19 12:39:47

标签: c# asp.net sql-server datetime

我在从<asp:TextBox>获取日期并将其存储在MSSQL数据库的“DATE”类型字段中时遇到了麻烦。目前我的代码忽略了我的文本框值,并存储了当前日期。我希望有人可以帮忙!

这是我的代码,我收集这样的日期:

DateTime end = DateTime.Now;
end = Convert.ToDateTime(txtEndDate.Text);

然后这一行与我的查询一起使用,以绑定参数。

AppendNews.Parameters.Add(new SqlParameter("@show_to", end));

出于兴趣,当我在本地主机上运行该程序时,一切正常!

此致

亚当

3 个答案:

答案 0 :(得分:1)

尝试使用:

bool isDateValid = DateTime.TryParseExact(
txtEndDate.Text,"dd/MM/yyyy",
System.Globalization.CultureInfo.InvariantCulture,
DateTimeStyles.None,out end)

这将尝试使用定义的格式解析字符串,如果格式无效,则返回false。

答案 1 :(得分:0)

使用更强的错误检查DateTime.TryParse。您的DateTime可能无法正确解析。

DateTime end;

if(!DateTime.TryParse(txtEndDate.Text, out end))
{
    throw new FormatException("End Date must be in a valid format");
}

我会使用SqlParameterCollection.AddWithValue或指定您的SqlDbType

AppendNews.Parameters.AddWithValue("@show_to", end);

答案 2 :(得分:0)

问题实际上是因为ASP服务器的文化与数据库服务器不匹配。要解决此问题,可以在ASP项目的web.config文件中设置文化。这样做,作为<system.web>包装器的一部分。

<globalization uiCulture="en-GB" culture="en-GB"/>

然后,当您从

中收集值时,可以通过此行在脚本中引用此值
DateTime dFrom = DateTime.ParseExact(txtDate.Text, "dd/MM/yyyy", CultureInfo.CurrentUICulture);

希望这有帮助!