我想创建一个CreatedOn
列的表格,类型为DateTimeOffset
,当插入记录时,我希望使用当前的UTC日期和时间。
如果我添加一个默认约束GETUTCDATE()
,它会在本地时间内输入0偏移量。如果我使用SYSUTCDATETIME()
,它会使用正确的偏移量放入当地时间。
是否可以使用0偏移量获得utc时间?
答案 0 :(得分: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...