【问题标题】:SQL Server 2008 timestamp data typeSQL Server 2008 时间戳数据类型
【发布时间】:2011-12-29 08:34:59
【问题描述】:

目前我有一个数据类型为datetime 的列,具有默认约束。现在我想将数据类型更改为时间戳。

alter table tblname
alter column date_modified timestamp not null

我最初的要求是每当我更新一条记录时,名为date_modified 的列应该更新为最近的时间。

这与在 MYSQL 中使用的数据类型为 TIMESTAMP 和默认值 CURRENT_TIMESTAMP 的功能相同

如何在 SQL Server 2008 中执行此操作??

【问题讨论】:

  • 致那些发布答案的人——我想他在问如何在 MS SQL 中模仿 MySQL 时间戳。我知道的唯一方法是使用触发器(希望有人知道更优雅的解决方案)
  • 我想我不在乎他怎么想。我不是在读他的心思。我回答他提出的问题。下面的答案正在回答他所提出的问题。学习要问什么问题——现在至少在遇到问题时使用文档一次 30 秒——是将脚本小子与知道如何编程的人区分开来的原因。对不起。如果他想回答另一个问题,他可以问。这不像问问题要花钱。
  • timestamp and datetime的可能重复

标签: sql-server sql-server-2008


【解决方案1】:

Timestamp in MySQL 和 timestamp in SQL Server 不是一回事。保留您的 datetime 并添加一个 after update 触发器,该触发器将 date_modified 更新为 getdate()。

【讨论】:

  • 感谢您的回答,我喜欢您的回答方式。
  • 谢谢@Mikael。这就是我最初的做法!试图使用 sql 时间戳而不是日期时间!现在我读到 sql timestamp 既不是 UNIX timestamp 也不是 T-SQL timestamp。我想我必须继续与datetime 合作。非常感谢你
  • 现在我在这里读到 technet.microsoft.com/en-us/library/aa260631%28v=sql.80%29.aspx sql timestamp 既不是 UNIX timestamp 也不是 T-SQL timestamp。我想我必须继续与datetime 合作。非常感谢你
【解决方案2】:

您是否检查过 SQL Server 中的 TIMESTAMP 类型实际上是什么?它与TIMESTAMP type in mysql 不同。文档说:

是一种在数据库中公开自动生成的唯一二进制数的数据类型

所以没有办法将其设置为“当前时间”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2011-05-29
    相关资源
    最近更新 更多