如何创建默认为当前 utc 日期时间的日期时间偏移列

How to create a date time offset column that defaults to the current utc date time

我想创建一个 table,其中包含一个 CreatedOn 列,类型为 DateTimeOffset,当插入记录时,我希望使用当前的 UTC 日期和时间.

如果我添加默认约束 GETUTCDATE(),它会在本地时间中添加 0 偏移量。如果我使用 SYSUTCDATETIME(),它会输入具有正确偏移量的当地时间。

是否可以将 utc 时间设为 0 偏移量?

我想您可以根据 SYSUTCDATETIME() 或任何其他日期时间戳是什么,将其强制为您想要的任何偏移量。您可以使用下面的代码并将偏移量更改为您想要的值,并使用 GETDATE() 而不是 GETUTCDATE(),等等...

SELECT GETUTCDATE() AS UTC_DT, SYSUTCDATETIME() AS SYS_UTC_DT, SYSDATETIMEOFFSET() AS SYS_DT_OFFSET

SELECT CAST(TODATETIMEOFFSET(GETUTCDATE(), '+00:00') AS DATETIME2) AS UTC_WITH_OFFSET   --SQL SERVER 2008 and onward...
SELECT GETDATE() AT TIME ZONE 'UTC'                                                     --SQL SERVER 2016 only...