在SQL Server 2008中创建一个datetime列,其默认值为当前时间戳UTC

时间:2014-04-18 11:30:45

标签: sql-server datetime

我在SQL Server 2008中创建一个表,如下所示:

create table Dummy
(
   id int,
   status int,
   node_id varchar(512),
   createdDTTM datetime NOT NULL default CURRENT_TIMESTAMP
);

但是我想将UTC时区指定为默认值。我知道在postgreSQL中我们有类似createdDTTM TIMESTAMP NOT NULL DEFAULT (now() at time zone 'utc')

的东西

我们可以在这里做类似的事情吗?

1 个答案:

答案 0 :(得分:12)

对于有时区信息的时间,请在SQL Server中使用DATETIMEOFFSET 2008 和更新版本):

create table dbo.Dummy
(
   id int,
   status int,
   node_id varchar(512),
   createdDTTM DateTimeOffset NOT NULL default SYSDATETIMEOFFSET()
);

使用SYSDATETIMEOFFSET(),您可以从SQL Server获取默认的当前日期和时间DATETIMEOFFSET(在您的服务器所在的本地时区)。

或许您正在寻找SYSUTCDATETIME()而不是以UTC格式提供当前日期和时间?这适用于DATETIME2(n)DATETIMEOFFSET列(在SQL Server 2008 中更新,我建议使用{{ 1}}}