FOR SYSTEM_TIME AS OF otime語法的含義


1. 背景

在測試FlinkSQL時,遇到FOR SYSTEM_TIME AS OF語法,研究下。
FOR SYSTEM_TIME AS OF otime指的是在otime時間點有效的數據。


2. 實踐過程

時態數據庫測試選擇了SQL-server2017

-- 創建 時態表
-- DBO是每個數據庫的默認用戶,具有所有者權限,即DbOwner 
create table dbo.Emp (
[eno] integer not null primary key,
[Sys_start] datetime2(2) generated always as row start,
[Sys_end] datetime2(2) generated always as row end,
[ename] varchar(50),
period FOR SYSTEM_TIME (Sys_start, Sys_end)
) with (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.EmpHistory) );

select * from dbo.Emp ;

-- 2022-01-24 05:58:13.71 插入一條數據
insert into dbo.Emp values('1', DEFAULT  ,  DEFAULT , 'ALIAS') ;

-- 2022-01-24 05:59:12.66 更新值
UPDATE dbo.Emp SET ENAME = 'BOB' ;
-- 查詢2022-01-24 05:59:11.66時刻的表數據
select * from dbo.Emp 
FOR SYSTEM_TIME AS OF '2022-01-24 05:59:11.66' ;

-- 2022-01-24 06:01:43.88
UPDATE dbo.Emp SET ENAME = 'CANDY' ;
-- 查詢2022-01-24 05:59:59.66時刻的表數據
select * from dbo.Emp 
FOR SYSTEM_TIME AS OF '2022-01-24 05:59:59.66' ;

-- 查詢當前時間的表數據
select * from dbo.Emp ;

3. 引用

TDSQL-時態數據庫
SQL-server2017安裝
sql server語法(基礎整理)
SqlServer中的dbo是什么意思

4. 拓展

Oracle中查看指定時間的表快照

# 注意oracle只保留近5天的快照
select * from xxx.test_table as of timestamp to_date('2022-01-21 11:19','yyyy-mm-dd hh24:mi');

oracle的閃回操作及一些相關知識點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM