Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在存储过程中将日期时间格式传递给MS sql server?_C#_Sql_Sql Server_Datetime - Fatal编程技术网

C# 如何在存储过程中将日期时间格式传递给MS sql server?

C# 如何在存储过程中将日期时间格式传递给MS sql server?,c#,sql,sql-server,datetime,C#,Sql,Sql Server,Datetime,我希望你能在我的项目中帮助我。 我很久以前就一直试图解决这个问题,但它不起作用 我试图将日期时间从c#传递到MS sql server,请注意 格式为“1900-01-01 00:00:00.000”的存储日期时间 当我在本地使用它时,它可以完美地工作,但当我将页面上传到服务器时,会出现错误 string connectionString; SqlConnection mySqlConnection; connectionString = Co

我希望你能在我的项目中帮助我。 我很久以前就一直试图解决这个问题,但它不起作用

我试图将日期时间从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;
旁注:

“请注意,服务器以“1900-01-01”格式存储datetime 00:00:00.000“


不,没有。datetime值是表示时间点的数值,它不是以文本形式存储的。

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

只需使用您已有的
DateTime
值:

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

“请注意,服务器以“1900-01-01”格式存储datetime 00:00:00.000“


不,没有。datetime值是表示时间点的数值,它不是以文本形式存储的。

您可以直接将
datetime
传递给您的参数,无需将其转换为字符串并再次返回到日期:

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

您可以直接将
DateTime
传递给您的参数,无需将其转换为字符串并再次返回到日期:

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

您会得到什么错误?当您说“服务器以格式存储日期时间”时,您的意思是什么?它是否存储为字符串?@Szymon否它存储为DateTime,意思是DateTimeformat@aetheria与dateTime对象1相关。我们需要知道您遇到的错误,以帮助诊断问题。2.如果该过程在本地工作,我预计会出现通信错误(安全/防火墙)。3.这个系统会保持在同一个时区吗?使用从应用层传递的DateTime可能会导致“计时”问题。我会考虑你的C代码和UTC中的DATEMETHOMENT在SQL数据库(类型DATEMETROBY)上的时间。如果可能的话,我通常喜欢在数据库中设置所有时间戳(只有用户需要的应用程序通过时间,除非您有法规遵从性需要)。您会遇到什么错误?当您说“服务器以格式存储日期时间”时,您的意思是什么?它是否存储为字符串?@Szymon否它存储为DateTime,意思是DateTimeformat@aetheria与dateTime对象1相关。我们需要知道您遇到的错误,以帮助诊断问题。2.如果该过程在本地工作,我预计会出现通信错误(安全/防火墙)。3.这个系统会保持在同一个时区吗?使用从应用层传递的DateTime可能会导致“计时”问题。我会考虑你的C代码和UTC中的DATEMETHOMENT在SQL数据库(类型DATEMETROBY)上的时间。如果可能的话,我通常喜欢在数据库中设置所有时间戳(只有用户需要的应用程序通过时间,除非您有法规遵从性需要)。这也是一个问题,因为它与服务器不匹配format@Alaa12根本不涉及服务器格式
DateTime
数据类型在.NET代码和SQL Server中都是二进制的。@Alaa12:当您将
DateTime
值放入参数时,它根本没有任何格式,因此没有格式不匹配的情况。这也会是一个问题,因为它与服务器不匹配format@Alaa12根本不涉及服务器格式
DateTime
数据类型在.NET代码和SQL Server中都是二进制的。@Alaa12:当您将
DateTime
值放入参数时,它根本没有任何格式,因此没有不匹配的格式。