系统版本的时态表中的AS OF子句如何工作?

时间:2018-10-27 05:40:36

标签: sql sql-server

在进行这些更改之前,您需要查询客户表以返回表的状态-您应该使用哪个查询?

正确的答案是:此查询从子条款开始使用,以返回更改之前的客户表状态。

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'

1 个答案:

答案 0 :(得分:0)

您正在使用系统版本的时态表。首先在ANSI SQL 2011引入,然后在SQL SERVER 2016引入。

此表有两个控制列,sysStartDatesysEndDate,用于指定记录有效的时间(当记录仍然有效时,结束日期设置为9999-12-31 )。

此子句FOR SYSTEM_TIME AS OF <date_time>将查询在指定日期时间内有效的数据。也就是说,它将过滤出sysStartDate大于<date_time>且sysEndDate小于<date_time>的数据,即,您正在查询在<date_time>处有效的数据。