0

我想在我的数据库中设置当前时间

我的专栏是“日期时间”格式

我的插入 SQL 如下。

// Set last login
DateTime date = DateTime.Now;
string insertSQLDet = "INSERT INTO [dbo].[user] (last_login) VALUES (" + date + ") WHERE user_id=" + user_id;

但我收到一条错误消息,说我在“WHERE”附近有错误。任何人都可以看到有什么问题吗?

4

5 回答 5

2

我猜!您想更新该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();
   }
于 2012-06-20T05:08:57.937 回答
1

INSERT语句不允许使用谓词,因为您没有选择任何内容。你的意思是发表UPDATE声明吗?

"UPDATE [dbo].[user] SET last_login = " + date + " WHERE user_id = " + user_id

另外,我强烈建议您使用参数来提供值

于 2012-06-20T05:07:00.873 回答
1

您使用的是什么 RDBMS?MSSQL 还是 MySQL?如果要获取服务器的日期时间,则不必传递参数。有一个函数会自动获取服务器的日期时间。

对于 MSSQL 选择 GetDate() 作为 ServerDate 对于 MySQL 选择 TIMESTAMP 作为 ServerDate

于 2012-06-20T05:19:15.687 回答
0

您没有从任何其他表中选择行。您手动给出了为什么在这种情况下不能使用 where 子句的值。

如果您尝试更新,那么以下查询将为您工作,

"UPDATE [dbo].[user] SET last_login = " + date + " WHERE user_id = " + user_id
于 2012-06-20T05:24:21.417 回答
0

您不需要将 datetime 作为参数传递。您可以在插入语句中的服务器上选择它。还可以使用参数化查询来绑定您的参数。

string qry="INSERT INTO [dbo].[user] (last_login) VALUES  ((SELECT CURRENT_TIMESTAMP)) WHERE user_id=@userId"
于 2012-06-20T06:42:10.250 回答