如何创建默认为当前 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...
我想创建一个 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...