我想在我的数据库中设置当前时间
我的专栏是“日期时间”格式
我的插入 SQL 如下。
// Set last login
DateTime date = DateTime.Now;
string insertSQLDet = "INSERT INTO [dbo].[user] (last_login) VALUES (" + date + ") WHERE user_id=" + user_id;
但我收到一条错误消息,说我在“WHERE”附近有错误。任何人都可以看到有什么问题吗?
我猜!您想更新该last_login字段,因此请使用该UPDATE语句并始终使用参数。
DateTime date = DateTime.Now;
string sql = "UPDATE [dbo].[user] SET last_login=@date WHERE user_id=@userid";
using(SqlCommand cmd=new SqlCommand(sql,conn))
{
cmd.Parameters.Add("@date",SqlDbType.DateTime).Value=date;
cmd.Parameters.Add("@userid",SqlDbType.VarChar,20).Vaule=user_id;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
INSERT语句不允许使用谓词,因为您没有选择任何内容。你的意思是发表UPDATE声明吗?
"UPDATE [dbo].[user] SET last_login = " + date + " WHERE user_id = " + user_id
另外,我强烈建议您使用参数来提供值。
您使用的是什么 RDBMS?MSSQL 还是 MySQL?如果要获取服务器的日期时间,则不必传递参数。有一个函数会自动获取服务器的日期时间。
对于 MSSQL 选择 GetDate() 作为 ServerDate 对于 MySQL 选择 TIMESTAMP 作为 ServerDate
您没有从任何其他表中选择行。您手动给出了为什么在这种情况下不能使用 where 子句的值。
如果您尝试更新,那么以下查询将为您工作,
"UPDATE [dbo].[user] SET last_login = " + date + " WHERE user_id = " + user_id
您不需要将 datetime 作为参数传递。您可以在插入语句中的服务器上选择它。还可以使用参数化查询来绑定您的参数。
string qry="INSERT INTO [dbo].[user] (last_login) VALUES ((SELECT CURRENT_TIMESTAMP)) WHERE user_id=@userId"