我必须将默认值添加到带有带有时区的UTC时间的datetime列中,现在我在默认约束中使用GETUTCDATE()
,但是没有将时区信息添加到该列中。
请帮助我。
答案 0 :(得分:1)
包括时区信息(特别是偏移量)的类型为datetimeoffset。 GETUTCDATE返回一个简单的旧DATETIME
,它没有时区指示,甚至没有本地与UTC指示符。
如果您关心时区和偏移量,请使用datetimeoffset
列,将`SYSDATETIMEOFFSET作为其默认值
答案 1 :(得分:0)
您需要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年起,您可以使用“时区” https://docs.microsoft.com/en-ru/sql/t-sql/queries/at-time-zone-transact-sql?view=sql-server-2017