我必须将默认值添加到带有 UTC 时间和时区的日期时间列,现在我正在使用GETUTCDATE()
默认约束,但它没有将时区信息添加到列中。
请帮我。
我必须将默认值添加到带有 UTC 时间和时区的日期时间列,现在我正在使用GETUTCDATE()
默认约束,但它没有将时区信息添加到列中。
请帮我。
包含时区信息(特别是偏移量)的类型是datetimeoffset。GETUTCDATEDATETIME
返回一个没有时区指示的普通旧版本,甚至没有本地与 UTC 指标。
如果您关心时区和偏移量,请使用datetimeoffset
列和 ` SYSDATETIMEOFFSET作为其默认值
您需要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