c#smalldate传递给sql server proc

peum 发布于 2019-03-09 c# 最后更新 2019-03-09 14:37 2 浏览

我试图将日期传递给一个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.
已邀请:

tiste

赞同来自:

只需直接传递DateTime ..

cmd.Parameters.AddWithValue("@import_date", DT_Value);
请参阅SQL Server Data Type Mappings

qodio

赞同来自:

这是第一个问题:

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代码实际上知道参数是Date而不是DateTime,那么甚至不应该有时间部分的概念。如果你可以发布你的SQL,那将有助于我们诊断这方面。找出正确使用的类型非常重要 - 它使生活变得更加简单。