-2

cmd.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = DateTime.Parse(txtStartDate.Text);

txtStartDate.Text 中的值类似于 31-07-2012

我需要在 2012 年 7 月 31 日拿到它。

用于存储过程中的处理。

我的代码是这样的:

            cmd = new SqlCommand("DownloadtoXLSheet", conn);



            cmd.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = DateTime.Parse(txtStartDate.Text);
            cmd.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = DateTime.Parse(txtEndDate.Text);
            cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = DropDownList1.Text.ToString();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.ExecuteNonQuery();

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt1);

帮帮我

4

4 回答 4

3

首先,您不需要特定格式的日期在存储过程/数据库中进行处理。一旦将 DateTime 添加为参数(类型为 DateTime),SQL 提供程序将确保 SQL 服务器可以处理日期。

另一方面,您可能需要特定格式的日期才能使 DateTime.Parse 工作。

尝试:

DateTime.ParseExact(input, "dd-MM-yyyy", CultureInfo.InvariantCulture);

但是,也许您应该DateTime.TryParseExact改用,以避免异常?

于 2012-07-31T12:31:22.863 回答
2

使用DateTime.ParseExact方法而不是DateTime.Parse.

DateTime result=DateTime.ParseExact("31-07-2012", "dd-MM-yyyy",CultureInfo.InvariantCulture);
于 2012-07-31T12:26:52.163 回答
0

在 .ToString() 方法中,您可以指定格式字符串 http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx

DateTime.Parse(txtStartDate.Text).ToString("yyyy-MM-dd")
于 2012-07-31T12:29:16.197 回答
0

尝试

DateTime dt = ...;

dt.ToString("yyyy-MM-dd");
于 2012-07-31T12:29:03.957 回答