【问题标题】:Set datetime in SQL在 SQL 中设置日期时间
【发布时间】:2012-06-22 05:00:54
【问题描述】:

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

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

我的插入SQL如下。

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

但我收到一条错误消息,提示我在“WHERE”附近有错误。谁能看出什么问题?

【问题讨论】:

  • 来自 "wanting to set" ,我想您正在寻找更新您的记录。在这种情况下,您应该选择更新语句而不是插入语句。此外,您可能需要在日期前后加上单引号 (') 才能使其正常工作。最好的方法是使用一些答案中指出的基于参数的 SQL。

标签: asp.net sql datetime


【解决方案1】:

我的猜测!您想更新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();
   }

【讨论】:

  • 非常感谢!我什至没有想到这一点。 :)
【解决方案2】:

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

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

另外,我强烈建议您use parameters to provide values

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

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

        string qry="INSERT INTO [dbo].[user] (last_login) VALUES  ((SELECT CURRENT_TIMESTAMP)) WHERE user_id=@userId"
        

        【讨论】:

          猜你喜欢
          • 2019-12-25
          • 1970-01-01
          • 1970-01-01
          • 2017-08-12
          • 2020-02-09
          • 2021-04-03
          • 1970-01-01
          • 2012-12-21
          • 1970-01-01
          相关资源
          最近更新 更多