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.

c# smalldate传递给SQL server进程

直接通过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,这将有助于我们诊断这方面。找出正确的类型是非常重要的——它使生活变得简单得多。