ASP.NET中SQL Server存储过程中的日期参数

时间:2013-09-09 04:00:15

标签: asp.net sql-server

我编写了一个SQL Server存储过程,除其他外,还接受date参数:

CREATE PROCEDURE data.addScore
    ... (some parameters),
    @testDate date
AS

在ASP.NET页面上,我有一个带有Calender Extender控件的文本框(来自AJAX Toolkit),允许用户选择日期;日期以DD/MM/YYYY格式存储在文本框中。我有一些代码应该使用参数执行存储过程,使用文本框中的日期值:

cmd.Parameters["@testDate"].Value = Convert.ToDateTime(((TextBox)li.FindControl("date")).Text);

我知道我绝对可以使用((TextBox)li.FindControl("date")).Text来获取文本框的值,但对于我的生活,我无法将其转换为不会引发一些错误的格式,主要是'输入字符串的格式不正确'。

当我直接在服务器上运行存储过程时,我通常会绑定像@testDate = 'YYYYMMDD'这样的参数。

2 个答案:

答案 0 :(得分:3)

我建议你不要使用像dd / mm / yyyy这样的区域性模糊格式在文本框中存储任何内容。如果你使用像YYYYMMDD这样的明确格式,你就不会有任何问题。如果用户从日历控件或其他内容中进行选择,则应该很容易将您提供的日期与传递给数据库的日期分开。

答案 1 :(得分:0)

<asp:Textbox id="date" runat="Server"></asp:Textbox>

<cc1:CalendarExtender ID="calwhendate" runat="server" Enabled="true" Format="YYYYMMDD"
TargetControlID="date"></cc1:CalendarExtender>

将Ajax日历控件更改为所需的格式