【问题标题】:How to insert current date and time in sql server database using timestamp datatype?如何使用时间戳数据类型在 sql server 数据库中插入当前日期和时间?
【发布时间】:2015-11-17 01:36:36
【问题描述】:

我想将当前日期和时间从 asp.net 网页插入到 sql server 数据库中。我在 sql server 表中使用时间戳数据类型。

表结构:

CREATE TABLE user3
  (
     uname VARCHAR(50) PRIMARY KEY,
     email VARCHAR(50),
     doj   TIMESTAMP
  ); 

使用的代码:

   cmd.Parameters.Clear();
        cmd.CommandText = "insert into user3 values(@uname,@email,@doj)";
        cmd.Parameters.AddWithValue("@uname", uname);           
        cmd.Parameters.AddWithValue("@email", email);   
        cmd.Parameters.AddWithValue("@jdate", DateTime.Now);
        if (cn.State == ConnectionState.Closed)
            cn.Open();
        cmd.ExecuteNonQuery();
        cn.Close();

请帮助我提出您的建议和解决方案。

【问题讨论】:

  • 试试cmd.Parameters.AddWithValue("@doj", DateTime.Now);
  • 要在数据库中存储日期,最好使用DATETIME。 TIMESTAMP 有不同的用法。
  • 您使用时间戳有什么原因吗?这用于版本控制,而不是用于存储日期/时间值。
  • 如果该值只设置一次(如加入日期一样),请将数据库中的列设置为默认值
  • 明确命名INSERT INTO user3 (uname, email, doj) VALUES (@uname, @email,@doj)中的列

标签: c# asp.net sql-server sql-server-2008 timestamp


【解决方案1】:

时间戳是行版本控制的方法。它是自动生成的。但是 datetime 是一种数据类型。所以使用日期时间而不是时间戳。

create table user3(uname varchar(50) primary key,email varchar(50),doj datetime);

【讨论】:

  • datetime2 更好,推荐用于新工作。
  • 改变数据类型并不是全部,完整的解决方案看看参数是如何绑定的。
  • 谢谢@Iad2025。刚才看到那个参数了。
  • 不要fix code inside the question。这就是答案的目的。
【解决方案2】:

datetimedefault 值一起使用:

create table user3 (
    uname varchar(50) primary key,
    email varchar(50),
    doj datetime default getdate()
   );

当您在表中插入新行时(doj 没有值),它将自动设置。我通常将此专栏称为CreatedAt

【讨论】:

    【解决方案3】:

    假设您在每次用户注册时都进行插入;

    尝试对表设置约束

    创建表user3(uname varchar(50) 主键,email varchar(50),doj datetime default getdate());

    那么你就不必每次都传递那个值

    SQL Server default date time stamp?

    【讨论】:

      猜你喜欢
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2014-10-20
      • 1970-01-01
      相关资源
      最近更新 更多