gpt4 book ai didi

SQL Server 2016 - 手动设置期间开始和结束日期时间

转载 作者:行者123 更新时间:2023-12-04 12:46:48 25 4
gpt4 key购买 nike

我正在尝试加载一些基于时间的历史数据,我希望它位于 SQL Server 2016 的时态表中。

据我所知,周期开始和结束日期不能手动设置,它们是使用系统时间在插入/更新/删除时间设置的。

但是,我尝试加载的文件具有数据可用的特定日期,我希望将其反射(reflect)在期间开始日期中,以便我可以相应地查询它。

有没有办法手动设置期间的开始和结束时间?

最佳答案

您可以通过禁用系统版本控制、输入数据并再次启用系统版本控制来执行此操作。您必须小心不要插入重叠的日期,因为这会使您的历史记录表无法使用。
我发现这在将数据从一个系统迁移到另一个系统时非常有用。

将数据插入主表

首先关闭您的系统版本控制,然后完全删除它。

ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE dbo.ExampleTable DROP PERIOD FOR SYSTEM_TIME;

-- 插入带有开始日期和默认结束日期的数据。

-- 为 system_time 添加您的时间段并启用系统版本控制
ALTER TABLE dbo.ExampleTable ADD PERIOD FOR SYSTEM_TIME(StartDate, EndDate);
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = ON(History_Table = dbo.ExampleTableHistory));

请注意,如果当前隐藏了列,这将删除它。

将数据插入到您的历史记录表中。

对于历史数据,您可以通过关闭系统版本控制并插入数据直接插入到历史表中。
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = OFF);

-- 将您的数据插入到 dbo.ExampleTableHistory 表中,包括开始日期和结束日期。

-- 启用系统版本控制
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = ON (History_Table = dbo.ExampleTableHistory)); 

关于SQL Server 2016 - 手动设置期间开始和结束日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44546913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com