如何在SQL Server中使用TimeZone将默认约束设置为UTC时间

时间:2019-06-21 07:48:23

标签: sql sql-server datetime default-constraint

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

请帮助我。

2 个答案:

答案 0 :(得分:1)

包括时区信息(特别是偏移量)的类型为datetimeoffsetGETUTCDATE返回一个简单的旧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