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

kee*_*ser 12 sql-server datetime

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

create table Dummy
(
   id int,
   status int,
   node_id varchar(512),
   createdDTTM datetime NOT NULL default CURRENT_TIMESTAMP
);
Run Code Online (Sandbox Code Playgroud)

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

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

mar*_*c_s 12

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

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

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

或者您正在寻找SYSUTCDATETIME()哪种能够以UTC格式提供当前日期和时间?这适用于DATETIME2(n)DATETIMEOFFSET列(在SQL Server 2008和更新版本中,我建议不再使用DATETIME)

  • 完善.我使用SYSUTCDATETIME()作为DATETIME2的默认值.在表中插入值时,我只关注以UTC格式插入它们. (2认同)