2016-07-26 108 views
0

我發現了一個查詢的一些代碼,看起來像這樣:在我的SQL Server select查詢中,這個「for system_time between」是什麼?

select * 
from myview 
for system_time between @fromDt and @toDt --what is this? 
where countryId = @Id 

我從來沒有見過的查詢for system_time between X and Y。這是什麼意思?我在哪裏可以找到關於這個或使用它的例子的文檔?

Here is the syntaxselect,它提到了for條款,但只提到XML,JSON和瀏覽選項(link)。

+0

查詢是否有效?您的視圖中是否有名爲system_time的列? –

+2

這是2016年新增功能:[時間表](https://msdn.microsoft.com/zh-cn/library/dn935015.aspx) – jpw

回答

1

你可以找到它在Temporal Tables,這是一個新的功能,2016年之前,在評論中解釋說:

How do I query temporal data?

SELECT statement FROM<table>條款有一個新的條款FOR SYSTEM_TIME有五個時間,特定的子條款跨當前和歷史表查詢數據 。這個新的SELECT語句 語法直接支持在單個表上,通過多個連接傳播並​​通過多個臨時表之上的視圖傳播。

然後它也說:

FOR SYSTEM_TIME篩選出具有 零期限有效期行(SysStartTime = SysEndTime)。如果您在同一個事務中的相同主鍵 上執行多個更新,則這些行將生成 。在這種情況下,僅在交易之前臨時查詢表面 的行版本以及在交易之後變爲實際的 的行。如果您需要在 分析中包含這些行,請直接查詢歷史記錄表。