c# smalldate传递给SQL server进程
本文关键字:SQL server 进程 smalldate | 更新日期: 2023-09-27 18:08:46
我正试图将日期传递给sql过程,时间正在传递,并导致过程失败,因为时间不匹配,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.
直接通过DateTime
.
cmd.Parameters.AddWithValue("@import_date", DT_Value);
参见SQL Server数据类型映射
第一个问题:
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,这将有助于我们诊断这方面。找出正确的类型是非常重要的——它使生活变得简单得多。