2016-08-24 68 views
0

我想創建一個CreatedOn列的DateTimeOffset類型的表,並且插入記錄時,我希望當前的UTC日期和時間爲使用。如何創建默認爲當前utc日期時間的日期時間偏移列

如果我添加一個默認約束GETUTCDATE(),它會在本地時間使用0偏移量。如果我使用SYSUTCDATETIME()它會在當地時間輸入正確的偏移量。

是否有可能在0偏移量中獲得utc時間?

+0

你能提供一些結果是什麼'GETUTCDATE(),SYSUTCDATETIME() SYSDATETIMEOFFSET()'正在返回給你,什麼正確的偏移量應該是你?如果它給你正確的偏移量,我很困惑你爲什麼不使用'SYSUTCDATETIME()'。我幾次閱讀你的問題,並且無所適從 - 可能sys DT設置不正確? – scsimon

+0

我目前的當地時間是2016-08-24 13:44:19.5187024,選擇SysUtcDateTime()返回2016-08-24 20:44:19.5187024。這是正確的utc日期和時間,儘管它沒有說,它仍然是0。如果我將默認約束設置爲SysUtcDateTime(),則該列中的值爲2016-08-24 13:44:19.5187024 +00:00。它給了我一個無效抵消的當地時間。 –

回答

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... 
+0

這足夠接近我們將要做的事情。我們將使用的默認值是SYSDATETIMEOFFSET,並與我們所有的具有本地偏移量的日期一起使用。 –

+0

仍然是一個有趣的問題,我要去調查@JoshuaBelden – scsimon

相關問題