簡體   English   中英

如何在存儲過程中將DateTime格式傳遞給MS sql服務器?

[英]How can I pass DateTime format to MS sql server in a stored procedure?

希望您能在我的項目中對我有所幫助。 很久以前,我一直在嘗試解決此問題,但它不起作用。

我正在嘗試將日期時間從C#傳遞到MS sql服務器,請注意該服務器存儲的日期時間格式為'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 00:00:00.000'”

不,不是。 datetime值是代表時間點的數字值,不會存儲為文本。

您可以直接將DateTime傳遞給您的參數,而無需將其轉換為字符串並再次返回到日期:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM