我喜欢SQL Server 2016中的时态表,我想在新项目中使用它。 不幸的是,似乎sql在历史表中记录UTC时间,而不是当前时间。有可能改变这一点?SQL时态表:可以更改从UTC到当前时间的记录时间?
要明白我的意思,请运行以下代码并注意与CreatedIn和SysStartTime列的区别。
CREATE TABLE dbo.tblTest
(
ID int NOT NULL PRIMARY KEY CLUSTERED IDENTITY (1,1)
,SomeColumn varchar(50) NULL
,CreatedIn datetime2(2) NOT NULL DEFAULT GETDATE()
,SysStartTime datetime2(2) GENERATED ALWAYS AS ROW START NOT NULL DEFAULT GETDATE()
,SysEndTime datetime2(2) GENERATED ALWAYS AS ROW END NOT NULL
,PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime)
)
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.tblTestHistory));
GO
INSERT INTO dbo.tblTest (SomeColumn) VALUES ('Some value');
GO
SELECT * FROM dbo.tblTest
你在你的时区观察到DST吗?如果是这样,你真的想介绍一下模棱两可的历史吗? –
@Damien_The_Unbeliever:我明白你的意思了,但事实并非如此。只有一台服务器,所有用户都在同一个区域。如果所有历史记录表都使用当前时间而不是UTC记录更改,则不会看到任何问题。 – adiw
您或您是否没有在该时区观察夏令时? –