只保存日期而不是C#winforms的sql数据库中的时间

时间:2015-04-23 10:10:03

标签: c# sql winforms

我遇到了将时间保存到SQL数据库中的问题。

当用户扫描到建筑物时,系统应该将时间和日期保存到数据库中。目前它保存日期,但时间保存为00:00。

我在保存过程中将日期转换为SQL时遇到了问题,所以也许我在这个过程中犯了一个错误。我已经看了好几年了,不知道为什么它也不会节省时间。

有什么想法吗?这是有问题的代码

  var currentdate = DateTime.Now;
                    var TimeAccess = currentdate.Date.ToString("yyyy-MM-dd HH:mm:ss");
                    SqlCommand com = new SqlCommand();
                    com.Connection = new SqlConnection(Properties.Settings.Default.BioEngineering);
                    com.Connection.Open();

                    com.CommandText = "INSERT INTO AccessHistory (DoorID,UserID,TimeAccess,Status) VALUES (@DoorID,@UserID,@TimeAccess,@Status)";

                    com.Parameters.Add("@DoorID", SqlDbType.Int).Value = DoorNumber;
                    com.Parameters.Add("@UserID", SqlDbType.Int).Value = cboUserID.Text;
                    com.Parameters.Add("@TimeAccess", SqlDbType.DateTime).Value = TimeAccess;
                    com.Parameters.Add("@Status", SqlDbType.VarChar).Value = "Successful";

谢谢

4 个答案:

答案 0 :(得分:3)

您不应更改其数据类型并将其转换为string,如果您的数据库类型为datedatetime,则只需将其直接传递到数据库:

com.Parameters.Add("@TimeAccess", SqlDbType.DateTime).Value = currentDate;

答案 1 :(得分:1)

在第二行中可能DateTime而不是Date

var TimeAccess = currentdate.DateTime.ToString("yyyy-MM-dd HH:mm:ss");

答案 2 :(得分:1)

您可以直接传递DateTime.Now命令参数,并确保数据库列为DateTime。那就是它。

 com.Parameters.Add("@TimeAccess", SqlDbType.DateTime).Value = DateTime.Now;

您可以从代码中删除以下内容,因为根本不需要。

  var currentdate = DateTime.Now;
  var TimeAccess = currentdate.Date.ToString("yyyy-MM-dd HH:mm:ss");

答案 3 :(得分:0)

               SqlCommand com = new SqlCommand();
                com.Connection = new SqlConnection(Properties.Settings.Default.BioEngineering);
                com.Connection.Open();

                com.CommandText = "INSERT INTO AccessHistory (DoorID,UserID,TimeAccess,Status) VALUES (@DoorID,@UserID,getdate(),@Status)";

                com.Parameters.Add("@DoorID", SqlDbType.Int).Value = DoorNumber;
                com.Parameters.Add("@UserID", SqlDbType.Int).Value = cboUserID.Text;
               com.Parameters.Add("@Status", SqlDbType.VarChar).Value = "Successful";

使用Getdate()