0

我正在尝试将日期传递给 sql 过程,正在传递时间,并导致 proc 失败,因为时间不匹配,c# 正在传递日期 12:00:00 数据库显示日期 00:00:00

所以这是我的代码

public class
datetime dt_value;

从 javascript 日历中获取日期

DT_Value = Convert.ToDateTime(Request.Form["TextBox_Tracking_ImportDate"]);

尝试转换为 mm/dd/yyyy

string DT_Value2 = DT_Value.ToString("ddMMyyyy");

将日期传递给 sql

cmd.Parameters.Add(new SqlParameter("@import_date", DT_Value2));


ERROR: Error converting data type nvarchar to smalldatetime.
4

2 回答 2

2

直接通过就好了DateTime。。

cmd.Parameters.AddWithValue("@import_date", DT_Value);

请参阅SQL Server 数据类型映射

于 2013-04-11T16:24:43.743 回答
1

这是第一个问题:

string DT_Value2 = DT_Value.ToString("ddMMyyyy");
cmd.Parameters.Add(new SqlParameter("@import_date", DT_Value2));

您正在执行毫无意义的字符串转换,因此您正在破坏数据。只是不要这样做。始终尽可能避免字符串转换。

直接通过DateTime

cmd.Parameters.Add(new SqlParameter("@import_date", DT_Value));

或者更好的是,明确指定类型:

cmd.Parameters.Add("@import_date", SqlDbType.Date).Value = DT_Value;

或者仅从以下内容中明确获取日期部分DateTime

cmd.Parameters.Add("@import_date", SqlDbType.Date).Value = DT_Value.Date;

但老实说,如果您的 SQL 代码实际上知道参数是 aDate而不是 a DateTime,那么甚至不应该有时间部分的概念。如果您可以发布您的 SQL,那将有助于我们诊断该方面。确定要使用的正确类型非常重要——它让生活变得如此简单。

于 2013-04-11T16:25:48.023 回答