是否可以在sql中插入时间戳?

时间:2014-07-18 18:11:31

标签: sql-server tsql

我想要一个列,在插入完成时添加默认时间戳。我在MySQL中使用选择默认时间戳选项完成了这项工作。我如何在SQL Server中执行此操作?

3 个答案:

答案 0 :(得分:2)

  

ALTER TABLE table_name ADD InsertTime DATETIME DEFAULT GETDATE()

答案 1 :(得分:0)

ALTER TABLE [table] ADD [CreationTimeStampUTC] DATETIME DEFAULT(GETUTCDATE())

或者您可以对GETDATE()执行相同操作,我认为我在实际代码中看到的更多。当然,请注意,GETDATE()将使用SQL Server的当前服务器时间进行评估,如果您有一个,或者特别是客户端,可能会或可能不会与Web服务器的当前时间匹配。的机器。显然,这没有问题,只要确保你提前了解其含义。您还可以将此时间戳存储为DATETIMEOFFSET以消除这些问题,但由于您明确说明了服务器上的默认值,我认为UTC已经足够了。

答案 2 :(得分:0)

您正在寻找的是默认约束。如何添加它取决于列是否已存在。如果没有,您可以一次性添加列和约束,如下所示:

alter table dbo.yourTable 
   add [NewColumn] datetime 
   constraint [DF_NewColumn] default (getdate());

如果列已存在,您可以像这样附加默认值:

alter table dbo.yourTable
   add constraint [DF_ExistingColumn] default (getdate()) for [ExistingColumn];

最后,如果尚不存在,您可以将约束添加到表定义中:

create table dbo.yourTable (
    NewColumn datetime not null constraint [DF_NewColumn] default (getdate())
)

注意:在所有情况下,我都给了约束一个名字。你可以选择不这样做,但是你最终会得到一个讨厌的DBA,问为什么她的数据库比较是一团糟,因为约束名称在dev和prod之间不匹配。 :)