如何使用 DateTime Web 表单字段通过存储过程将 DateTime 参数传递到数据库中?

How to Use DateTime Web Form Field to Pass DateTime Parameter into Database using Stored Procedure?

我正在尝试使用网络表单中的日期时间字段将日期时间参数传递到数据库中。

数据库中的日期时间格式为:

2015-05-18 00:00:00.000

网络表单输入字段是:

<asp:TextBox ClientIDMode="Static" ID="txtEffDate" runat="server" CssClass="calendarImg" Width="100px"></asp:TextBox>
<asp:ImageButton runat="Server" ID="ImageButton1" ImageUrl="~/images/cal.gif" BorderStyle="None"
AlternateText="Click to show calendar" TabIndex="300" Style="cursor: pointer;" Width="16px" />
<asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtEffDate" PopupButtonID="ImageButton1" />

后面的具体参数代码为:

cmd.Parameters.Add("@desiredEffDate", SqlDbType.DateTime).Value = txtEffDate;

存储过程中的具体参数为:

@desiredEffDate datetime,

我应该如何正确定义日期时间或在后面的代码中将其转换为正确的格式?

感谢您的帮助!

首先,我建议使用更好的控件,或者在文本框控件中设置 HTML5 属性 类型:

<asp:TextBox ClientIDMode="Static" ID="txtEffDate" runat="server" CssClass="calendarImg" Width="100px" type="date"></asp:TextBox>

您可以尝试这样转换日期:

DateTime effDate;    

Try {
    effDate = DateTime.Parse(txtEffDate);
} Catch (FormatException ex) {
    // invalid date string
}

除非您提出的问题有拼写错误,否则您需要将 sql 参数值设置为文本框对象,而不是文本框的值。您应该使用 txtEffDate.Text 来获取它的值。假设您的文本框值只能格式化为日期时间(通过日期时间选择器或设置类型属性,但后者目前不具有与前者相同的浏览器兼容性),那么它应该投射正确到 SQL 中的日期时间。也可以使用之前发布的答案提供的功能将其转换为 .NET 日期时间