我喜歡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
您或您是否沒有在該時區觀察夏令時? –