0

我必须将默认值添加到带有 UTC 时间和时区的日期时间列,现在我正在使用GETUTCDATE()默认约束,但它没有将时区信息添加到列中。

请帮我。

4

2 回答 2

1

包含时区信息(特别是偏移量)的类型是datetimeoffsetGETUTCDATEDATETIME返回一个没有时区指示的普通旧版本,甚至没有本地与 UTC 指标。

如果您关心时区和偏移量,请使用datetimeoffset列和 ` SYSDATETIMEOFFSET作为其默认值

于 2019-06-21T07:59:00.217 回答
1

您需要DATETIMEOFFSET数据类型和SWITCHOFFSET功能

DECLARE @t TABLE 
(
 id INT,
 dt DATETIMEOFFSET DEFAULT (SWITCHOFFSET(SYSDATETIMEOFFSET(),'+00:00'))
);

INSERT @t(id) VALUES(1);

SELECT id, dt, SYSDATETIMEOFFSET() 
FROM @t;

自 2016 年以来,您可以使用 AT TIME ZONE https://docs.microsoft.com/en-ru/sql/t-sql/queries/at-time-zone-transact-sql?view=sql-server-2017

于 2019-06-21T08:44:57.623 回答