gpt4 book ai didi

c# - 如何在存储过程中将 DateTime 格式传递给 MS sql server?

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:23 24 4
gpt4 key购买 nike

我希望你能在我的项目中帮助我。很久以前,我一直在尝试解决这个问题,但没有成功。

我正在尝试将日期时间从 c# 传递到 MS sql server,请注意服务器存储的日期时间格式为“1900-01-01 00:00:00.000”

当我在本地使用它时,它工作得很好,但是当我将页面上传到服务器时,出现错误。

  string connectionString;
SqlConnection mySqlConnection;
connectionString = ConfigurationManager.ConnectionStrings[("connectionNamr")].ConnectionString;
mySqlConnection = new SqlConnection(connectionString);
SqlCommand mySqlComd = new SqlCommand();
SqlDataReader reader;
mySqlComd.CommandText = "ProcedureName";
mySqlComd.CommandType = CommandType.StoredProcedure;
mySqlComd.Connection = mySqlConnection;
SqlParameter depParam = new SqlParameter("@colName1", SqlDbType.NVarChar, 255);
SqlParameter empParam = new SqlParameter("@colName2", SqlDbType.NVarChar, 20);
SqlParameter startDateParam = new SqlParameter("@EVcolName3", SqlDbType.DateTime);
SqlParameter endDateParam = new SqlParameter("@colName4", SqlDbType.DateTime);
SqlParameter filterParam = new SqlParameter("@colName5", SqlDbType.NVarChar, 20);
depParam.Value = string.Empty;
empParam.Value = employeeID;
DateTime datet = new DateTime(year,month,day);
string datet1 = datet.ToString();
//string datet1 = datet.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'");
// datet1 = datet1.Substring(0, 19);
startDateParam.Value = Convert.ToDateTime(datet1.Trim()); ;
endDateParam.Value = Convert.ToDateTime(datet1.Trim()); ;
filterParam.Value = string.Empty;
mySqlComd.Parameters.Add(depParam);
mySqlComd.Parameters.Add(empParam);
mySqlComd.Parameters.Add(startDateParam);
mySqlComd.Parameters.Add(endDateParam);
mySqlComd.Parameters.Add(filterParam);
mySqlConnection.Open();
mySqlComd.ExecuteNonQuery();
reader = mySqlComd.ExecuteReader(CommandBehavior.CloseConnection);

while (reader.Read())
{
attendance_date = reader["SITE_IN_TIME"].ToString();
}

mySqlConnection.Close();
return attendance_date;

}
catch (Exception exp)
{
return "Error, Exception: " + exp;
}

最佳答案

日期格式的问题是因为您将其转换为字符串,然后再转换回 DateTime 值。根据特定服务器上的文化设置,这可能有效也可能无效。它还可能会误解数据,例如将日期从 2013-10-12 转换为 2013-12-10。

只需使用您已有的 DateTime 值:

  DateTime datet = new DateTime(year,month,day);
startDateParam.Value = datet;
endDateParam.Value = datet;

旁注:

"note that the server stored datetime with format '1900-01-01 00:00:00.000'"

不,它没有。日期时间值是表示时间点的数值,它不存储为文本。

关于c# - 如何在存储过程中将 DateTime 格式传递给 MS sql server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19680831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com