在进行这些更改之前,您需要查询客户表以返回表的状态-您应该使用哪个查询?
正确的答案是:此查询从子条款开始使用,以返回更改之前的客户表状态。
SELECT *
FROM dbo.customer
FOR SYSTEM_TIME AS OF '2017-10-01 00:00:00'
ORDER BY customerID;
问题:在这种情况下,AS OF
子句如何工作?如何查询历史记录表中的'2017-10-01 00:00:00'
?
答案 0 :(得分:0)
您正在使用系统版本的时态表。首先在ANSI SQL 2011
引入,然后在SQL SERVER 2016
引入。
此表有两个控制列,sysStartDate
和sysEndDate
,用于指定记录有效的时间(当记录仍然有效时,结束日期设置为9999-12-31
)。
此子句FOR SYSTEM_TIME AS OF <date_time>
将查询在指定日期时间内有效的数据。也就是说,它将过滤出sysStartDate大于<date_time>
且sysEndDate小于<date_time>
的数据,即,您正在查询在<date_time>
处有效的数据。