我遇到了将时间保存到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";
谢谢
答案 0 :(得分:3)
您不应更改其数据类型并将其转换为string
,如果您的数据库类型为date
或datetime
,则只需将其直接传递到数据库:
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()