【问题标题】:Create a datetime column in SQL Server 2008 with default value as current timestamp UTC在 SQL Server 2008 中创建一个日期时间列,默认值为当前时间戳 UTC
【发布时间】:2014-04-18 11:30:45
【问题描述】:

我正在 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')

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

【问题讨论】:

    标签: sql-server datetime


    【解决方案1】:

    对于包含时区信息的时间,请在 SQL Server(2008 及更新版本)中使用 DATETIMEOFFSET

    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 及更高版本中,我建议不要 再使用 DATETIME

    【讨论】:

    • 完美。我使用 SYSUTCDATETIME() 作为 DATETIME2 的默认值。在表中插入值时,我只注意以 UTC 格式插入它们。
    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多